http://home.earthlink.net/~benfranq/Sudoku.html
也许有人可以告诉我为什么它在Internet Explorer中不起作用
在其他浏览器中,它似乎工作正常。
我尝试在每一行添加分号,但它仍然不起作用。
这不是我的页面,一位朋友让我弄清楚为什么它不在IE中工作,但在其他浏览器中没问题。我将它移动到我的服务器,因为他不允许我ftp到他的服务器。无论如何,我会在短期内发布我的分号更改的新链接。
答案 0 :(得分:3)
我认为这不是唯一的原因,但你应该用分号结束每个语句。 JavaScript会让你在没有这样做的情况下逃脱,但无论如何,这总是一个很好的做法。
function hints(){
for(c=0;c<N4;c++)if(status[c]==" "){ // unsolved cell
if(ruleCell(c)>0){ high(c) ; continue }
}
}
你想从提示中操纵c
吗?在这里,您将在全球范围内操纵它。
IE在执行elem.setAttribute("onclick",...)
时行为不端,而是尝试使用事件处理模型。 Here's a section on Wikipedia关于特定于Microsoft的DOM事件处理。
答案 1 :(得分:2)
首先猜测:你必须用分号结束你的线
答案 2 :(得分:1)
有三个问题。
JasonWyatt发现的elem.setAttribute("onclick",...)
问题,
javascript使用方括号表示法来索引字符串中的字符。请改用.charAt()。
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正好在不同的行中。
所以:
正如我前面提到的,没有javascript压缩在这里。
我怀疑行结尾。您是在非Windows机器上开发的,还是在Windows机器上的编辑器配置为具有不同的行结尾? (CR代替CR / LF)
(无论如何首先尝试删除注释代码以确定。然后考虑行结尾)
答案 5 :(得分:-1)
尝试使用不同的变量名称。出于某种原因,IE对使用类或msie等变量名称有限制。我列了一份清单并很快分享:)