我正在尝试在JavaScript中使用document.getElementById()。innerHTML来更改网页中的信息。在FireFox上,这可以像W3C文档中所描述的那样工作,但是,同样的方法在IE中返回“未知错误”。 JavaScript看起来像这样:
function Change_Info (ID, ROW, VALUE)
{
if (document.getElementById)
{
var ntext = "<td width=4\% bgcolor=#FFFFFF> </td><td width=92\% bgcolor=#FFFFFF colspan=2><font face=Arial size=2 color=#5578C4>" + VALUE + "</font></td><td width=4\% bgcolor=#FFFFFF><center> </center></td>";
document.getElementById( ID + "-" + ROW).innerHTML = ntext;
return false;
}
}
脚本由MouseOver事件调用,如下所示:
onmouseover='Change_Info("thetag","1","Some Info");
脚本会将ID与 - 然后是ROW组合在一起,在这个例子中,它将是标签-1。 html文档中确实存在确切的标记。使用带有硬编码标签名称的getElementById会显示相同的错误,并且在这种情况下,变量方法是首选方法。
关于为什么完整的html表信息在ntext中的问题,无论出于什么原因嵌套ID在两者 FireFox和IE上失败,即使W3C规范声明它应该工作(显然两个浏览器都没有完全将W3C规范称为persceriri)。如果有人知道访问和更改嵌套ID的方式,这在FireFox和IE中都有效,我肯定想知道它。
此外,在使用innerHTML来更改信息时,我只在IE中获得此“未知错误”。阅读工作没有错误。
有人可以指出我的脚本错误在哪里,以便我可以在鼠标悬停事件上交换文本“消息”。
答案 0 :(得分:2)
IE不会让你以这种方式添加.alter表行。您将需要使用DOM方法removeChild,appendChild和createElement OR insertRow和insertCell
答案 1 :(得分:1)
“此外,在使用innerHTML更改信息时,我只在IE中获得此'未知错误'。阅读工作没有错误。”
我遇到了同样的问题并使用了以下内容:
var newdiv = document.createElement("div");
newdiv.innerHTML = "new content";
var container = document.getElementById("container");
container.removeChild( container.firstChild );
container.appendChild(newdiv);
答案 2 :(得分:0)
至于摆脱ntext,你可以做类似
的事情document.getElementById(ID +' - '+ ROW).getElementsByTagName('font')[0] .innerHTML = VALUE;
如果它是getElementById部分不起作用,你仍然会失去运气。尝试:
var test = document.getElementById(ID +' - '+ ROW);
警报(测试);
要查明是否找到了对象,以确定是否因为尝试在null错误上访问innerHTML而得到错误,或者它实际上设置的innerHTML不起作用。后者似乎对我很可能,在这种情况下,提议的解决方案可能有所帮助。
答案 3 :(得分:0)
请给jQuery一个机会。它很好地抽象了浏览器的特性。从jQuery站点下载最新的jquery,以下就足够了:
<script type="text/javascript" src="path/to/jquery"></script>
<script type="text/javascript">
function Change_Info (ID, ROW, VALUE)
{
if (document.getElementById)
{
var ntext = "<td width=4\% bgcolor=#FFFFFF> </td><td width=92\%
bgcolor=#FFFFFF colspan=2><font face=Arial size=2 color=#5578C4>"+ VALUE+
"</font></td><td width=4\% bgcolor=#FFFFFF><center> </center></td>";
$("#" + ID + "-" + ROW).html(ntext);
return false;
}
</script>
<script type="text/javascript">
$(document).ready(function(){
$("# ID OF YOUR ELEMENT").mouseover(function(){
Change_Info("thetag","1","Some Info");
});
});
</script>