Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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_Html_Css - Fatal编程技术网

Javascript 单击的图像不';再次单击后,不会返回上一个图像

Javascript 单击的图像不';再次单击后,不会返回上一个图像,javascript,html,css,Javascript,Html,Css,Html代码: <img src="images/assets/plus.png" alt="Earth" id="pic" class="portrait" onclick="changeImage()" /> 我正在使用这些代码在单击时更改图像。现在我希望,当我再次单击减号图像时,它将再次返回加号图像。我如何才能做到这一点?如果减号.png则设置为减号.png?否则将永远不会执行。如果不为负,则为负,否则为正。将==更改为=。如果您想要id为“pic”的图像,应该使用getE

Html代码:

<img src="images/assets/plus.png"  alt="Earth" id="pic" class="portrait" onclick="changeImage()" />

我正在使用这些代码在单击时更改图像。现在我希望,当我再次单击减号图像时,它将再次返回加号图像。我如何才能做到这一点?

如果
减号.png
则设置为
减号.png
?否则将永远不会执行。如果不为负,则为负,否则为正。将
==
更改为
=。如果您想要id为“pic”的图像,应该使用
getElementById()

编辑:


对于多个图像,请使用following并将
id=“pic”
更改为
class=“pic”
,在
中,您应该使用
document.getElementById(“pic”)
而不是现有的,因为
document.images[]
方法返回一个数组。在您的例子中,它返回“[object HTMLImageElement]”

您还应该在函数中移动
var newsrc=“减号.png”
。我不确定函数是否会以您拥有的方式识别变量

最后,不应在if中设置
newsrc
变量

也就是说,该代码要简单得多:

function changeImage() {
    if (newsrc != "minus.png") {
     for(var i = 0; i<document.getElementsByClassName("pic").length; i++) {
        document.getElementsByClassName("pic")[i].src = "images/assets/minus.png";
        document.getElementsByClassName("pic")[i].alt = "minus";
     }
        newsrc = "minus.png";
    } else {
     for(var i = 0; i<document.getElementsByClassName("pic").length; i++) {
        document.getElementsByClassName("pic")[i].src = "images/assets/plus.png";
        document.getElementsByClassName("pic")[i].alt = "plus";
     }
        newsrc = "plus.png";
    }

使用
代替
==
=
in
if(newsrc==“minus.png”){
simple logical error如果我想在同一页的不同图像中使用相同的字符,现在该怎么办?问题现在解决了。如果我想在两个图像中使用相同的字符,我该怎么办?我想使用类“pic”而不是id“pic”。我该怎么办?代码是否会更改?您的代码不起作用。请检查。我找不到代码中的错误所在。@user3649514您还指定了类肖像。它应该是
class=“肖像pic”
,而不是
class=“pic”class=“肖像”
@user3649514然后点击我的答案计票下的复选标记使其变为绿色。这表示您的问题已解决。我想使用class我现在应该做什么?不要问我说过在函数中移动
var newsrc=“减号.png”
。全局定义它应该很好。只需使用
document.getElementsByClassName即可(“ClassNameHere”)
但请记住,如果将类与当前代码一起使用,并且有其他具有相同类名的映像,则所有这些映像也将发生更改。“全局定义它应该可以。”Ehh.全局变量(和函数)应该尽可能避免。我会注意到,OP可以通过简单地检查图像的
alt
文本或
.src
值来轻松确定哪个状态处于活动状态。此外,建议使用
var pic=document.getElementById(“pic”);…pic.src='…
function changeImage() {
    if (newsrc != "minus.png") {
     for(var i = 0; i<document.getElementsByClassName("pic").length; i++) {
        document.getElementsByClassName("pic")[i].src = "images/assets/minus.png";
        document.getElementsByClassName("pic")[i].alt = "minus";
     }
        newsrc = "minus.png";
    } else {
     for(var i = 0; i<document.getElementsByClassName("pic").length; i++) {
        document.getElementsByClassName("pic")[i].src = "images/assets/plus.png";
        document.getElementsByClassName("pic")[i].alt = "plus";
     }
        newsrc = "plus.png";
    }
function changeImage() {
    var pic = document.getElementById("pic");
    var x = document.getElementById("pic").src;
    if (x == "images/assets/plus.png"){
        pic.src = "images/assets/minus.png"
        // Plus whatever else you want to do
    } else {pic.src = "images/assets/plus.png"
        // Plus whatever else you want to do
    }
}