1

设置:

我有一个 Suckerdiv 菜单,其中包含调用函数的链接。所述功能如下所示:

function F(string)
{
    var s = '';
    var c = '';
    var t = '';
    if(string == 'cat')
    {
        s = "cat";
        c = "animal";
        t = "fluffy";
    }
   // ...
    document.getElementById("title").innerHTML = t;
    document.getElementByID("category").innerHTML = c;
    document.getElementByID("description").innerHTML = s;
}

工作正常。但是,在实际实现中,description 变量中带有一点点 HTML,似乎是在甩 IE。Firefox 处理得很好,但如果我有,说,

c = 'Stuff<br><ul><li>listed stuff</li><li>more listed stuff</li><li>some more listed stuff</li></ul><br>bla bla<br>bla';

然后 IE 抛出一个未知的运行时错误并在我单击该特定链接时死掉。

上面的三个 ID 是嵌套在表中的 div,如下所示:

<table border=1>
<tr><td><div id="title"></div></td></tr>
<tr><td><div id="category"></div></td></tr>
<tr><td><div id="description"></div></td></tr>
</table>

我知道表格本身在 IE 中是只读的,但我也知道 TD 不是。标题和类别都可以正常工作,所以我认为它与该字符串中的 html 有关。我应该逃避其中的一部分吗?我尝试用 < 等 html 转义代码填充它,但它只是没有评估 HTML,我留下了一堆难看的文本。

有任何想法吗?

4

3 回答 3

1

嗬!

抱歉浪费了你们的时间,伙计们——事实证明这完全不相关。由于 div 的 id,这条线断了;由于页面中间的 HTML 嵌套在内容管理系统生成的包含 div 中,显然页面中的其他地方还有另一个 div。将“div id=description”更改为“div id=dynDescription”解决了它。

不过,感谢您的回答!绝对赞赏。

于 2009-02-20T18:54:36.070 回答
1

我只能猜测您可能想尝试自动关闭您的 BR 标签:<br />

当您使用像PrototypejQuery这样的库进行 DOM 操作时,这种情况通常会消失。通常在内部考虑浏览器怪癖。

于 2009-02-20T17:56:10.500 回答
0

我创建了以下测试用例:

<html><head></head><body>
<script type="text/javascript">
function F(str) {
  var s = '';
  var c = '';
  var t = '';
  if (str == 'cat') {
    s = "cat";
    // c = "animal";
    c = 'Stuff<br><ul><li>listed stuff</li><li>more listed stuff</li><li>some more listed stuff</li></ul><br>bla bla<br>bla';
    t = "fluffy";
  }
  // ...
  document.getElementById("title").innerHTML = t;
  document.getElementById("category").innerHTML = c;
  document.getElementById("description").innerHTML = s;
}
</script>
<table border="1">
<tr><td><div id="title"></div></td></tr>
<tr><td><div id="category"></div></td></tr>
<tr><td><div id="description"></div></td></tr>
</table>
<form><input type="button" onclick="F('cat');"></form>
</body></html>

它似乎在 Internet Explorer 7 中正常工作。您确定没有您正在做的事情// ...导致您的错误吗?您是否确认 Internet Explorer 7 的每个副本都会发生这种情况(您的副本可能有附加组件、损坏或过时的组件或不正确的注册表项导致您看到的错误)。您是否将问题缩小到使用如上所示的简单而简洁的代码示例将字符串分配给 innerHTML?

于 2009-02-20T18:11:36.033 回答