Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问Javascript节点列表中的项以更改图像_Javascript_Image_Getelementsbytagname - Fatal编程技术网

访问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

我试图用Javascript代码创建与CSS Hover相同的效果(用于学习Javascript和将来使用)。所以,在鼠标悬停时,我希望单个图像增加不透明度

我在下面编写的代码不起作用。请参阅评论,了解我正在尝试做什么

<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;