代码之家  ›  专栏  ›  技术社区  ›  hmcclungiii

javascript在ie:sudoku拼图中不起作用

  •  0
  • hmcclungiii  · 技术社区  · 16 年前

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

    也许有人能告诉我为什么它不能在Internet Explorer中工作

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

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

    这不是我的网页,一个朋友问我为什么它不能在IE中工作,但在其他浏览器中可以。我要把它移到我的服务器上,因为他不允许我用ftp到他的服务器上。不管怎样,我很快就会用分号更改发布新链接。

    6 回复  |  直到 16 年前
        1
  •  1
  •   Matt    16 年前

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

    你把拼图(和解决方案,以及其他东西)存储为一个字符串。在chrome/firefox中,解决方案[2]将返回该字符串中的第三个字符。但是,在IE8中,它返回未定义。解决方法是使用solution.charat(2);

    我还随意删除了setattribute调用,而是直接设置属性。

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

        2
  •  3
  •   JasonWyatt    16 年前

    分号

    我不认为这是唯一的原因,但您可能应该用分号结束每个语句。有时,JavaScript会让您不必这样做就可以摆脱困境,但不管怎样,这始终是一个很好的实践。

    全局/窗口范围

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

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

    setattribute('onclick')

    做错事 elem.setAttribute("onclick",...) 而是尝试使用事件处理模型。 Here's a section on Wikipedia 关于特定于Microsoft的DOM事件处理。

        3
  •  2
  •   Mike Robinson    16 年前

    第一个猜测:你必须用分号结束你的行。

        4
  •  1
  •   Alohci    16 年前

    有三个问题。

    1. 这个 elem.setAttribute("onclick",...) Jasonwyatt发现的问题,

    2. JavaScript使用方括号表示法对字符串中的字符进行索引。改用.charat()。

    3. 这个 elem.setAttribute("class",...) 应该是 elem.className = ...

        5
  •  0
  •   Nivas    16 年前

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

    我的建议:尝试删除注释代码或尝试阻止注释( /* */ )

    我复制粘贴源到本地计算机,转换 // /**/ 它似乎起作用(我承认,我只是 事情好多了。我没有 测试 )。

    通常:如果Javascript被压缩,通过删除 不必要的 空间和新行,避免 / / 尽可能多的评论

    (但是如果某个程序(Web服务器?)是 压缩 通过删除不必要的空白来实现JavaScript,难道它不应该同时删除注释吗?)

    编辑: 澄清一下:当我在IE中查看源代码时,我把javascript看作一条龙行。在IE8的内置 源查看器 (你怎么称呼它?)当我复制粘贴到记事本时

    当我在Safari(Mac)中查看源代码时,javascript在不同的行中是正确的。

    所以:

    1. 这里没有像我前面提到的那样进行JavaScript压缩。

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

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

        6
  •  -1
  •   Anas Toumeh    16 年前

    尝试使用不同的变量名。由于某些原因,IE对使用类或msie等变量名有限制。我列了一个单子,很快就会和大家分享。