JavaScript在IE中不起作用:Sudoku Puzzle

时间:2009-11-07 16:15:19

标签: javascript debugging internet-explorer cross-browser

http://home.earthlink.net/~benfranq/Sudoku.html

也许有人可以告诉我为什么它在Internet Explorer中不起作用

在其他浏览器中,它似乎工作正常。

我尝试在每一行添加分号,但它仍然不起作用。

这不是我的页面,一位朋友让我弄清楚为什么它不在IE中工作,但在其他浏览器中没问题。我将它移动到我的服务器,因为他不允许我ftp到他的服务器。无论如何,我会在短期内发布我的分号更改的新链接。

6 个答案:

答案 0 :(得分:3)

分号

我认为这不是唯一的原因,但你应该用分号结束每个语句。 JavaScript会让你在没有这样做的情况下逃脱,但无论如何,这总是一个很好的做法。

全局/窗口范围

function hints(){
   for(c=0;c<N4;c++)if(status[c]==" "){  // unsolved cell 
      if(ruleCell(c)>0){ high(c) ; continue }                       
   }
}   

你想从提示中操纵c吗?在这里,您将在全球范围内操纵它。

的setAttribute(的 'onClick')

IE在执行elem.setAttribute("onclick",...)时行为不端,而是尝试使用事件处理模型。 Here's a section on Wikipedia关于特定于Microsoft的DOM事件处理。

答案 1 :(得分:2)

首先猜测:你必须用分号结束你的线

答案 2 :(得分:1)

有三个问题。

  1. JasonWyatt发现的elem.setAttribute("onclick",...)问题,

  2. javascript使用方括号表示法来索引字符串中的字符。请改用.charAt()。

  3. elem.setAttribute("class",...)应为elem.className = ...

答案 3 :(得分:1)

通过IE8的调试器运行后(按F12,它实际上是一个很好的工具),我发现了问题:IE8并没有将你的字符串视为一个字符数组。

您将拼图(以及解决方案等)存储为字符串。在chrome / firefox中,解决方案[2]将返回该字符串中的第3个字符。但是,在IE8中,它返回undefined。解决方法是使用solution.charAt(2);

我也冒昧地删除了setAttribute调用,而是直接设置属性。

您可以在此处找到固定代码(适用于IE8):http://pastebin.org/51648

答案 4 :(得分:0)

我认为这是因为第一行被评论了。当我看到视图源时,javascript换行符消失了,因此整个javascript代码被解释为注释。

我的建议:尝试删除评论代码或尝试阻止评论(/* */

我将源文件粘贴到我的本地计算机上,将//转换为/**/它似乎有用(我承认,我只是看到事情变得更好了。我没有测试)。

通常:如果javascript被压缩,删除不必要的空格和新行,请尽可能避免//条评论

(但是如果某个程序(网络服务器?)通过删除不必要的空格来压缩 javascript它不应该删除注释吗?)

编辑: 澄清一下:当我在IE中查看源代码时,我将javascript视为单个looong行。在IE8的内置源查看器(你怎么称呼它?)以及当我复制粘贴到记事本时

当我在Safari(Mac)中执行view-source时,javascript正好在不同的行中。

所以:

  1. 正如我前面提到的,没有javascript压缩在这里。

  2. 我怀疑行结尾。您是在非Windows机器上开发的,还是在Windows机器上的编辑器配置为具有不同的行结尾? (CR代替CR / LF)

  3. (无论如何首先尝试删除注释代码以确定。然后考虑行结尾)

答案 5 :(得分:-1)

尝试使用不同的变量名称。出于某种原因,IE对使用类或msie等变量名称有限制。我列了一份清单并很快分享:)