document.getElementById()。innerHTML在IE中失败并显示“未知错误”

时间:2009-07-08 07:49:00

标签: javascript

我正在尝试在JavaScript中使用document.getElementById()。innerHTML来更改网页中的信息。在FireFox上,这可以像W3C文档中所描述的那样工作,但是,同样的方法在IE中返回“未知错误”。 JavaScript看起来像这样:

function Change_Info (ID, ROW, VALUE) 
{
  if (document.getElementById)
    {
       var ntext = "<td width=4\% bgcolor=#FFFFFF>&nbsp;</td><td width=92\% bgcolor=#FFFFFF colspan=2><font face=Arial size=2 color=#5578C4>" + VALUE + "</font></td><td width=4\% bgcolor=#FFFFFF><center>&nbsp</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中获得此“未知错误”。阅读工作没有错误。

有人可以指出我的脚本错误在哪里,以便我可以在鼠标悬停事件上交换文本“消息”。

4 个答案:

答案 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);

http://domscripting.com/blog/display/99

答案 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>&nbsp</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>