javascript - 如何使用 addEventListener 改变 HTML 布局?
问题描述
我目前正在尝试在单击 HTML page1 时使用 EventListenerstyle.display
将图像从page2 切换none
到block
page2,这可能吗?
这是EventListener
收听的 HTML。
<link rel="stylesheet" href="../public/styles/style.css">
<script src="../public/scripts/selection.js"></script>
<form action = "/search" method = "POST" id="submitMessage" class="field has-addons">
<select name ="species">
<option value="" disabled selected>--Please Select a Species--</option>
<option class = "dog" value="Dog">Dog</option>
<option class = "cat" value="Cat">Cat</option>
</select>
</form>
这是应该更改的 JavaScript style.display
:
const selection = () => {
const dog = document.querySelector('.dog');
const cat = document.querySelector('.cat');
dog.addEventListener('click', () => {
dogPic.style.display = block;
});
cat.addEventListener('click', () => {
catPic.style.display = block;
});
}
selection();
这是CSS:
.dog{
}
.cat{
}
.dogPic{
display: none;
}
.catPic{
display: none;
}
这是第二个 HTML,其中图片应根据单击的选项而更改。
<link rel="stylesheet" href="../public/styles/style.css">
<div class="dogPic">
<img src="../public/images/dogSpecies.png" style="max-height: 130px;">
</div>
<div class="catPic">
<img src="../public/images/catSpecies.png" style="max-height: 130px;">
</div>
我没有将 JavaScript 放在第二个 HTML 上。
我在 Node.js 中执行此操作,但 JavaScript 是没有任何 Node.js 函数的普通 JavaScript。这应该工作吗?或者这是不可能的?
[![This is the directory structure, index.ejs is where the select option is, species.ejs is where I want the picture to change according to what option is clicked on][1]][1]
解决方案
我不知道您如何为您的项目服务,所以我猜测并尝试了。
我的项目结构:
html/index.html
public
├ styles/style.css (empty)
└ scripts/selection.js
我用它来服务
npx http-server .
所以我可以浏览到http://127.0.0.1:8080。
html/index.html
与您的非常相似,但该script
元素已移至该form
元素下方。
<link rel="stylesheet" href="../public/styles/style.css">
<form action = "/search" method = "POST" id="submitMessage" class="field has-addons">
<select name ="species">
<option value="" disabled selected>--Please Select a Species--</option>
<option class = "dog" value="Dog">Dog</option>
<option class = "cat" value="Cat">Cat</option>
</select>
</form>
<script src="../public/scripts/selection.js"></script>
<div class="dogPic">
<img src="../public/images/dogSpecies.png" style="max-height: 130px;">
</div>
<div class="catPic">
<img src="../public/images/catSpecies.png" style="max-height: 130px;">
</div>
public/scripts/selection.js
是:
const selection = () => {
const dog = document.querySelector('.dog');
const cat = document.querySelector('.cat');
dog.addEventListener('click', () => {
let dogPic = document.querySelector('.dogPic');
let catPic = document.querySelector('.catPic');
dogPic.style.display = 'block';
catPic.style.display = 'none';
});
cat.addEventListener('click', () => {
let dogPic = document.querySelector('.dogPic');
let catPic = document.querySelector('.catPic');
dogPic.style.display = 'none';
catPic.style.display = 'block';
});
}
selection();
事件侦听器范围之外的变量是不可访问的,因此您必须在其中分配 DOM 元素。(请注意,dogPic
andcatPic
不是 CSS 元素(我的 CSS 是空的),而是div
元素。)然后您可以以编程方式更改其style
.
许多框架都支持像使用 CSS 一样使用 Javascript 对象,但是,您不能将纯 CSS 视为 Javascript 变量。
推荐阅读
- c# - 从 LINQ 声明变量的类型
- laravel - 如何显示数组中的特定数据?
- typescript - 区分两个相似的对象
- mongodb - 尝试修复 mongodb 时出现异常
- asp.net - Web Api - httppost - 请求的资源不支持 http 方法在生产服务器上发布后获取
- java - Java“获取资源文件”在maven构建后带来null
- javascript - 如何将图像链接从 Laravel 存储发送到前端(角度)。除图像外的所有工作属性
- matlab - 3D 矩阵乘以 2D 矩阵
- json - 如何在powershell中解码JSON字符串值并去掉开头和结尾的引号
- python - Project Euler #7 Python 错误输出