在Javascript中单击并单击if

在Javascript中单击并单击if,javascript,jquery,Javascript,Jquery,我的脚本中包含此函数: $("#image4").click(function(){ if($(this).attr("src")=="http://XXX.jpg"){ $(this).attr("src","http://YYYY.jpg"); }else{ $(this).attr("src","http://XXX.jpg"); } return false;}); HTML 我不明白为什么当我点击我的图片,如果部分不工作。我解释说:如果

我的脚本中包含此函数:

$("#image4").click(function(){
   if($(this).attr("src")=="http://XXX.jpg"){
      $(this).attr("src","http://YYYY.jpg");
   }else{
      $(this).attr("src","http://XXX.jpg");
   } 
return false;});
HTML


我不明白为什么当我点击我的图片,如果部分不工作。我解释说:如果我使用这个代码,什么都不会改变。如果我在单击功能中添加并发出警报,我会看到警报两次,并看到图像更改两次。 似乎“如果”不起作用,每次都应用“如果”和“其他”

有人可以帮我。我认为这是一个基本功能,我不明白为什么它不起作用

谢谢

你错过了一个括号

工作:

你错过了一个括号


工作:

sysntax和代码中的所有内容都是正确的,因此这绝对是一个价值问题。问题可能是src中有前导或尾随空格

试着保持警惕

alert("-"+$(this).attr("src")+"-")
以及-(hypen)和src值之间是否有空格

也尝试

警报($(this.attr(“src”)=”http://XXX.jpg)
,如果src相等,则应返回true


更新:我可以重现您的问题——您应该已经连接事件侦听器函数两次了。检查您的原始代码。这就是问题所在。检查你的代码。您可以通过在jquery方法和img标记中将id更改为其他id来验证这一点,sysntax和代码中的所有内容都是正确的,因此这肯定是一个值问题。问题可能是src中有前导或尾随空格

试着保持警惕

alert("-"+$(this).attr("src")+"-")
以及-(hypen)和src值之间是否有空格

也尝试

警报($(this.attr(“src”)=”http://XXX.jpg)
,如果src相等,则应返回true



更新:我可以重现您的问题——您应该已经连接事件侦听器函数两次了。检查您的原始代码。这就是问题所在。检查你的代码。您可以通过在jquery方法和img标记console.log($(this.attr(“src”))中将id更改为其他id来验证这一点,并查看其不同之处。您的函数语法不正确。这只是复制到SO时的一个问题,还是真实代码中的问题?进行一点调试,将实际的src属性写入控制台,并将其与字符串进行比较。可能是您将其附加到了错误的DOM元素,可能是您的URL错误。不是
。单击(function(){})?它按预期工作:console.log($(this.attr(“src”))并查看其不同之处。您的函数语法不正确。这只是复制到SO时的一个问题,还是真实代码中的问题?进行一点调试,将实际的src属性写入控制台,并将其与字符串进行比较。可能是您将其附加到了错误的DOM元素,可能是您的URL错误。不是
。单击(function(){})?它按预期工作:也许你应该等他回答我的评论,问他这是否只是一个复制错误。我怀疑这是真正的问题,因为那样添加
alert()
就不会像他说的那样工作了。这是括号。。。它正在以其他方式工作OP刚刚在()中编辑,因此这不再回答问题。它仍在工作:)请参阅小提琴。。。
如果
正在工作,则警报框只出现一次,而不是两次,。。也许错误完全在别的地方,也许你们应该等他回答我的评论,问他这是否只是一个复制错误。我怀疑这是真正的问题,因为那样添加
alert()
就不会像他说的那样工作了。这是括号。。。它正在以其他方式工作OP刚刚在()中编辑,因此这不再回答问题。它仍在工作:)请参阅小提琴。。。
如果
正在工作,则警报框只出现一次,而不是两次,。。也许错误完全是在其他地方。你说“你应该附加事件侦听器函数两次”是什么意思。我只有一个点击事件在这个id上,还有一个带有这个id的图像。我尝试了很多次,但我可以重现你在这个代码中的问题,只要你确定你只有一个img标记,你能将那个img标记id重命名为某个东西吗“testimg”,并将事件函数附加到此。检查一下这可能是正确的猜测。我不认为这是一个多id问题,不过,这肯定是
click()
处理程序的双重赋值。可能出于某种原因,脚本执行了两次。你是什么意思您应该已经附加了事件侦听器函数两次。“我只在这个id上单击了一次事件,还有一个具有这个id的图像。我尝试了很多次,但是只有在您确定只有一个img标记的情况下,我才能用这段代码重现您的问题,您能将这个img标记id重命名为“testimg”吗,并将事件函数附加到此。检查一下,这可能是正确的猜测。我不认为这是一个多id问题,但是,这肯定是
click()
处理程序的双重赋值。可能由于某种原因,脚本执行了两次。
alert("-"+$(this).attr("src")+"-")