设置:
我有一个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;
}
工作正常。 但是,在实际实现中,描述变量中有一点点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-escape代码填充它,如&lt;等,但它只是没有评估HTML,我留下了一堆丑陋的文字。
有什么想法吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
卫生署!
抱歉浪费你的时间,伙计们 - 事实证明这完全不相关。由于div的id,这条线路正在破裂;由于页面中间的HTML嵌套在由内容管理系统生成的包含div中,显然页面中的其他地方还有另一个div。将“div id = description”更改为“div id = dynDescription”解决了它。
感谢您的回答!绝对赞赏。
答案 2 :(得分: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?