2014-02-19 93 views
0

我正在使用Javascript在URL中查找“#mode2”,如果是这样,它将产生与画布不同的彩色图像。脚本的这部分工作正常。问题出在产生切换超链接的脚本中。它会第一次正确切换(作为脚本的不同部分,这是有意义的),然后根据它开始的位置切换一次或两次。Javascript切换不起作用

I.E.蓝色是默认的,所以如果页面加载蓝色,它将切换橙色,然后回到蓝色,然后不起作用,就像在橙色它将切换到蓝色,然后将无法正常工作。

我知道它在我的代码中可能有些愚蠢的错误,但我找不到它,所以如果有人能帮助我,我会很感激。

<script type="text/javascript"> 
function toggle(blue){ 

if (blue == 0) { 
blue = 1; 
} 
else if (blue == 1) { 
blue = 0; 
} 
if (blue == 0){ 
var container = document.getElementById("navi"); 
      var content = '<a href="contact.html#mode1" title="toggle" onclick="toggle(blue);" >toggle colors</a> - <a href="index.html#mode2" title="home">back</a>'; 
      container.innerHTML= content; 
} 
else{ 
var container = document.getElementById("navi"); 
      var content = '<a href="contact.html#mode2" title="toggle" onclick="toggle(blue);" >toggle colors</a> - <a href="index.html" title="home">back</a>'; 
      container.innerHTML= content; 

} 

} 

var pathArray = document.URL; 
      if (pathArray.indexOf("mode2") != -1){ 
      var blue = 0; 
var container = document.getElementById("navi"); 
      var content = '<a href="contact.html#mode1" title="toggle" onclick="toggle(blue);" >toggle colors</a> - <a href="index.html#mode2" title="home">back</a>'; 
      container.innerHTML= content; 
} 
else{ 
var blue = 1; 
var container = document.getElementById("navi"); 
      var content = '<a href="contact.html#mode2" title="toggle" onclick="toggle(blue);">toggle colors</a> - <a href="index.html" title="home">back</a>'; 
      container.innerHTML= content; 


} 
</script> 
+0

[jsfiddle](http://jsfiddle.net)会有所帮助。 – bjb568

+0

向我们显示您的HTML – gfrobenius

回答

0

取而代之的是(对所有实例):

onclick="toggle(blue);"

做到这一点:

onclick="toggle('+blue+');"

这里是一个小提琴:http://jsfiddle.net/YF4Nc/1/

+0

它的工作,所以谢谢。你能解释为什么这有效吗? – user3084366

+0

范围界定问题。我不确定所有代码的位置,所以我用这种方式解决了这个问题,它只是传入值'0'或'1'而不是'blue'变量。解决这个问题的另一种方法是让你的'blue'变量全局变量,只是删除它前面的'VAR',不要将它传递给切换函数,它将起作用。这里有一个例子:** http://jsfiddle.net/YF4Nc/8/**既然它是全球性的,不管你的链接出现在哪里,他们都可以访问'blue',它是当前的全球价值; – gfrobenius