Javascript 无法识别函数中的变量

Javascript not recognized a variable within a function

本文关键字:变量 函数 识别 Javascript      更新时间:2023-09-26

>我正在尝试创建一个脚本,该脚本可以通过单击练习链接来打开和关闭图像。我正在尝试选择一个"data-"属性,但是当我尝试将其定义为变量时,它无法识别它。它给了我空错误。

这是我的 HTML:

<a data-img="image1" id="ugur1" class="btn btn-default" href="#" role="button">Toggle Image one</a>
<a data-img="image2" id="ugur2" class="btn btn-default" href="#" role="button">Toggle Image two</a>
<a data-img="image3" id="ugur3" class="btn btn-default" href="#" role="button">Toggle Image three</a>
<img src="C:'Users'Ugur Aydin'Desktop'Coding'Javascript'Images'Image1.png" class="img-responsive img hide" id="ugurpic1" alt="Responsive image" />
<img src="C:'Users'Ugur Aydin'Desktop'Coding'Javascript'Images'Image2.png" class="img-responsive img hide" id="ugurpic2" />
<img src="C:'Users'Ugur Aydin'Desktop'Coding'Javascript'Images'Image3.png" class="img-responsive img hide" id="ugurpic3" />

这是我的JS:

var ugur1 = document.getElementById("ugur1");
var ugur2 = document.getElementById("ugur2");
var ugur3 = document.getElementById("ugur3");
ugur1.addEventListener("click", picLink);
ugur2.addEventListener("click", picLink);
ugur3.addEventListener("click", picLink);
function picLink() {
    var picId = this.attributes["data-img"].value;
    var pic = document.getElementById(picId);
    if (pic.className === "img-responsive img hide") {
        pic.className = "img-responsive img";
    }
    else {
        pic.className = "img-responsive img hide";
    };
}

有人可以告诉我我做错了什么吗?谢谢。

您使用 getElementById 正确选择每个a,并正确添加事件侦听器。问题是,当您选择data-img属性时,它们不包含图像的 ID。基本上,每次更改时data-img="imageX" data-img="ugurpicX"以正确反映图像标记的 ID,或更改图像标记的 ID。


<a data-img="ugurpic1" id="ugur1" class="btn btn-default" href="#" role="button">Toggle Image one</a>
<a data-img="ugurpic2" id="ugur2" class="btn btn-default" href="#" role="button">Toggle Image two</a>
<a data-img="ugurpic3" id="ugur3" class="btn btn-default" href="#" role="button">Toggle Image three</a>

或者(不是两者兼而有之):

<img src="C:'Users'Ugur Aydin'Desktop'Coding'Javascript'Images'Image1.png" class="img-responsive img hide" id="image1" alt="Responsive image" />
<img src="C:'Users'Ugur Aydin'Desktop'Coding'Javascript'Images'Image2.png" class="img-responsive img hide" id="image2" />
<img src="C:'Users'Ugur Aydin'Desktop'Coding'Javascript'Images'Image3.png" class="img-responsive img hide" id="image3" />