Javascript 如何将函数应用于页面上的所有div
假设我在一个页面上有多个div,并且我希望向所有div添加功能,而不必使每个div都有唯一的id,也不必为每个div重写函数。我该怎么做?到目前为止,我有:Javascript 如何将函数应用于页面上的所有div,javascript,Javascript,假设我在一个页面上有多个div,并且我希望向所有div添加功能,而不必使每个div都有唯一的id,也不必为每个div重写函数。我该怎么做?到目前为止,我有: 文本 文本 文本 文本 文本 var elem=document.getElementById(“目标”); 元素addEventListener(“鼠标指针”,函数(){ elem.style.color=“红色”; }); 元素addEventListener(“mouseleave”,函数(){ elem.style.col
文本
文本
文本
文本
文本
var elem=document.getElementById(“目标”);
元素addEventListener(“鼠标指针”,函数(){
elem.style.color=“红色”;
});
元素addEventListener(“mouseleave”,函数(){
elem.style.color=“黑色”;
});
#目标{
背景颜色:蓝色;
}
将id
更改为类
,并将JS和CSS代码更改如下:
在Jquery中:
$(".target").each(function(){
var ele = $(this);
$(this).on("mouseenter",function(){
ele.css("color","red");
});
$(this).on("mouseenter",function(){
ele.css("color","black");
});
});
CSS:
将
id
更改为class
,并将JS和CSS代码更改如下:
在Jquery中:
$(".target").each(function(){
var ele = $(this);
$(this).on("mouseenter",function(){
ele.css("color","red");
});
$(this).on("mouseenter",function(){
ele.css("color","black");
});
});
CSS:
您必须使用
class
而不是id
<div id="target">text</div>
同样的策略适用于mouseleave
document.body.addEventListener("mouseleave", function(e) {
if (e.target.className === 'target'){
e.target.style.color = "black";
}
})) 您必须使用
class
而不是id
<div id="target">text</div>
同样的策略适用于mouseleave
document.body.addEventListener("mouseleave", function(e) {
if (e.target.className === 'target'){
e.target.style.color = "black";
}
})) 使用类而不是ID,然后您就可以使用它了
var elements = document.querySelectorAll(".listentome");
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener("mouseenter", function() {
this.style.color = "red";
});
}
var elements=document.querySelectorAll(“.listentome”);
对于(var i=0;i
使用类而不是ID,然后您就可以使用它了
var elements = document.querySelectorAll(".listentome");
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener("mouseenter", function() {
this.style.color = "red";
});
}
var elements=document.querySelectorAll(“.listentome”);
对于(var i=0;i
Html的id是唯一的,只有一个。 因此,您可以使用getElementByTagName替代getElementById 下面是代码
<script>
var elem = document.getElementsByTagName("div");
for(var i=0; i<elem.length; i++) {
var obj = elem[i];
obj.addEventListener("mouseenter", function() {
this.style.color = "red";
});
obj.addEventListener("mouseleave", function() {
this.style.color = "black";
});
}
</script>
var elem=document.getElementsByTagName(“div”);
对于(var i=0;iHtml的id是唯一的,只有一个。
因此,您可以使用getElementByTagName替代getElementById
下面是代码
<script>
var elem = document.getElementsByTagName("div");
for(var i=0; i<elem.length; i++) {
var obj = elem[i];
obj.addEventListener("mouseenter", function() {
this.style.color = "red";
});
obj.addEventListener("mouseleave", function() {
this.style.color = "black";
});
}
</script>
var elem=document.getElementsByTagName(“div”);
对于(var i=0;i,您需要在链接侦听器时激活捕获模式。
首先。
它可以按照你需要的方式来完成
您可以通过以下方式完成所需的工作:
为所有项目创建遮罩元素或父元素:
<div id="container">
<div class="target">text1</div>
<br>
<div class="target">text2</div>
<br>
<div class="target">text3</div>
<br>
<div class="target">text4</div>
<br>
<div class="target">text5</div>
</div>
然后我们需要向该元素添加两个侦听器:
var elem = document.getElementById("container");
elem.addEventListener("mouseenter", function(e) {
if(e.target.className === "target"){
e.toElement.style.color = "red";
}
}, true);
elem.addEventListener("mouseleave", function(e){
if(e.target.className === "target"){
e.fromElement.style.color = "black";
}
}, true);
它必须启用捕获模式,因为默认情况下,W3C规范侦听器带有false或激活冒泡模式。
因此,在本例中,当使用捕获类型在对该元素和所有内部元素执行的父元素上执行事件“mouseenter”和“mouseleave”时
elem.addEventListener("mouseenter", function(e) {
if(e.target.className === "target"){
e.toElement.style.color = "red";
}
/* Here */
}, true);
然后我们必须得到鼠标所在的当前div元素
if(e.target.className === "target")
因为监听器绑定到父元素时,父元素也会在其中运行,所以您只需要类为“target”的子元素
进一步阅读:
您需要在链接侦听器时激活捕获模式。
首先。
它可以按照你需要的方式来完成
您可以通过以下方式完成所需的工作:
为所有项目创建遮罩元素或父元素:
<div id="container">
<div class="target">text1</div>
<br>
<div class="target">text2</div>
<br>
<div class="target">text3</div>
<br>
<div class="target">text4</div>
<br>
<div class="target">text5</div>
</div>
然后我们需要向该元素添加两个侦听器:
var elem = document.getElementById("container");
elem.addEventListener("mouseenter", function(e) {
if(e.target.className === "target"){
e.toElement.style.color = "red";
}
}, true);
elem.addEventListener("mouseleave", function(e){
if(e.target.className === "target"){
e.fromElement.style.color = "black";
}
}, true);
它必须启用捕获模式,因为默认情况下,W3C规范侦听器带有false或激活冒泡模式。
因此,在本例中,当使用捕获类型在对该元素和所有内部元素执行的父元素上执行事件“mouseenter”和“mouseleave”时
elem.addEventListener("mouseenter", function(e) {
if(e.target.className === "target"){
e.toElement.style.color = "red";
}
/* Here */
}, true);
然后我们必须得到鼠标所在的当前div元素
if(e.target.className === "target")
因为监听器绑定到父元素时,父元素也会在其中运行,所以您只需要类为“target”的子元素
进一步阅读:
保留一个类而不是idFirst up:id必须唯一-您有4个id相同的div。您可能希望将其更改为class='target'。然后您可以使用document.queryselectoral(“.target”)然后循环应用事件处理程序的每个div。保留一个类而不是idFirst:id需要唯一-您有4个id相同的div。您可能希望将其更改为class='target'。然后您可以使用document.querySelectorAll(“.target”)然后应用事件处理程序对每个节点进行循环。您不能以这种方式侦听从querySelectorAll
返回的节点列表。您不能以这种方式侦听从querySelectorAll
返回的节点列表。