访问Javascript节点列表中的项以更改图像
我试图用Javascript代码创建与CSS Hover相同的效果(用于学习Javascript和将来使用)。所以,在鼠标悬停时,我希望单个图像增加不透明度 我在下面编写的代码不起作用。请参阅评论,了解我正在尝试做什么访问Javascript节点列表中的项以更改图像,javascript,image,getelementsbytagname,Javascript,Image,Getelementsbytagname,我试图用Javascript代码创建与CSS Hover相同的效果(用于学习Javascript和将来使用)。所以,在鼠标悬停时,我希望单个图像增加不透明度 我在下面编写的代码不起作用。请参阅评论,了解我正在尝试做什么 <script> //gets all img tags (qu.20) var images = document.getElementsByTagName("img") // Create new element with id "newNode" for t
<script>
//gets all img tags (qu.20)
var images = document.getElementsByTagName("img")
// Create new element with id "newNode" for the individual node to go into
var node = document.body.createElement("newNode")
// Add the new element into the html document
document.body.appendChild(newNode)
// Attach var i to the individual nodes and set src of new element as that node
function overImage () {
for (var i=0; i<images.length; i++) {
document.getElementById("newNode")
document.body.newNode.src = images.item(i)
}
}
// function to create a new class with same attributes as original when mouse leaves image
function leaveImage () {
for (var i=0; i<images.length; i++) {
document.getElementById("newNode")
document.body.newNode.src = images.item(i)
document.body.newNode.className = " leave"
}
}
</script>
<html>
<img src="image1.gif" onmouseover="overImage()" onmouseout="leaveImage()" alt="image" />
<img src="image2.gif" onmouseover="overImage()" onmouseout="leaveImage()" alt="image" />
</html>
<style>
img { opacity:0.5; }
#newNode { opacity:1; }
#newNode.leave { opacity:0.5; }
//获取所有img标记(qu.20)
var images=document.getElementsByTagName(“img”)
//为要进入的单个节点创建id为“newNode”的新元素
var node=document.body.createElement(“newNode”)
//将新元素添加到html文档中
document.body.appendChild(newNode)
//将var i附加到各个节点,并将新元素的src设置为该节点
函数overImage(){
对于(var i=0;i您的问题似乎位于顶部,document.body.createElement(“newNode”)
将为您提供一个类型错误:undefined不是函数
。createNode方法位于#document节点上,而不是HTMLElement
接下来,通过标记名创建节点,没有这样的标记
,当您可能想要分配字符串时,您可能想创建一个
它们每次都会在所有图像上循环,这意味着您最终总是会看到节点的src指向图像中最后一项的值
尝试使用foo
作为对要附加event\u handler
的每个节点的引用来链接这些侦听器。这将允许您更详细地访问mouseover或mouseout事件,尤其是当event\u handler
查看它的第一个参数时,该参数将是事件本身,或者This
将是我将是调用处理程序的节点
作为调试的第一步,请始终检查控制台,它通常会让您快速将问题缩小到与问题完全一致的范围您的问题似乎位于顶部,document.body.createElement(“newNode”)
将为您提供一个类型错误:undefined不是函数
。createNode方法位于#document节点上,而不是HtmleElement
接下来,通过标记名创建节点,没有这样的标记
,当您可能想要分配字符串时,您可能想创建一个
它们每次都会在所有图像上循环,这意味着您最终总是会看到节点的src指向图像中最后一项的值
尝试使用foo
作为对要附加event\u handler
的每个节点的引用来链接这些侦听器。这将允许您更详细地访问mouseover或mouseout事件,尤其是当event\u handler
查看它的第一个参数时,该参数将是事件本身,或者This
将是我将是调用处理程序的节点
作为调试的第一步,请始终检查控制台,它通常会让您快速将问题缩小到与问题完全一致的范围您的问题似乎位于顶部,document.body.createElement(“newNode”)
将为您提供一个类型错误:undefined不是函数
。createNode方法位于#document节点上,而不是HtmleElement
接下来,通过标记名创建节点,没有这样的标记
,当您可能想要分配字符串时,您可能想创建一个
它们每次都会在所有图像上循环,这意味着您最终总是会看到节点的src指向图像中最后一项的值
尝试使用foo
作为对要附加event\u handler
的每个节点的引用来链接这些侦听器。这将允许您更详细地访问mouseover或mouseout事件,尤其是当event\u handler
查看它的第一个参数时,该参数将是事件本身,或者This
将是我将是调用处理程序的节点
作为调试的第一步,请始终检查控制台,它通常会让您快速将问题缩小到与问题完全一致的范围您的问题似乎位于顶部,document.body.createElement(“newNode”)
将为您提供一个类型错误:undefined不是函数
。createNode方法位于#document节点上,而不是HtmleElement
接下来,通过标记名创建节点,没有这样的标记
,当您可能想要分配字符串时,您可能想创建一个
它们每次都会在所有图像上循环,这意味着您最终总是会看到节点的src指向图像中最后一项的值
尝试使用foo
作为对要附加event\u handler
的每个节点的引用来链接这些侦听器。这将允许您更详细地访问mouseover或mouseout事件,尤其是当event\u handler
查看它的第一个参数时,该参数将是事件本身,或者This
将是我将是调用处理程序的节点
调试的第一步总是检查控制台,它通常会让您快速地将问题缩小到与问题完全一致的范围您可以用一种更简单的方式来执行此操作,请检查以下示例:
var f=函数(e){
//此时,事件目标可以是页面中的任何元素
var t=e.target;
//检查事件目标是否为img元素
如果(t.tagName.toLowerCase()==“img”){
//然后切换其活动类
t、 切换('active');
}
}
//将侦听器添加到窗口(或任何图像容器上)
addEventListener('mouseover',f/*在mouseover*/上调用此函数f,false);
addEventListener('鼠标输出
<script>
function overImage () {
var selectImage = document.getElementsByTagName("img")
for (var i=0; i<selectImage.length; i++) {
selectImage[i].className = " over"
}
}
function leaveImage () {
var selectImage = document.getElementsByTagName("img")
for (var i=0; i<selectImage.length; i++) {
selectImage[i].className = ""
}
}
</script>
<style>
img { opacity:0.5; }
.over { opacity:1; }
</style>
var node = document.createElement("img");
node.setAttribute('id', 'newNode');
document.body.appendChild(node);
// outside loop
var node = document.getElementById("newNode");
// inside loop
node.src = images.item(i).src;