比如这段source中:
   if(typeof message == 'undefined') {
    li.appendchild(document.createTextNode('Message was undefined'));
   } else if(typeof li.innerHTML != undefined) {
    li.innerHTML = message;
   } else {
    li.appendchild(document.createTextNode(message));
   }innerHtml与appendchild(document.createTextNode())其实是等效的就是给LI添加一个结点这里要判断一下浏览器是否支持innerHMTL,但如果去掉这个判断直接引用li.appendchild(document.createTextNode(message));就会报错。
难道说是因为结点本身的性质决定了吗?
难道说支持innerHMTL的浏览器没有TEXT的结点。
的确IE下是没有text的结点的。但是firefox也运行不出来结果哦。这是为什么呢?

解决方案 »

  1.   

    不清楚你的标题和你的内容表达的是啥。只看你的标题。
    回答是。如果innerHMTL 可以把元素里面的内容都换掉。换的是html代码
    比如 objexample.innerHMTL="<input ....../>"  你会看到页面上是个input控件。
    但是如果用了
    appendchild(document.createTextNode(="<input ....../>"  ))
    那么你看到不是一个input控件,而是就是一个字符串
      

  2.   

    <li id="x"></li><script>
    var x = document.getElementById("x");
    x.appendChild(document.createTextNode("汉字"));
    </script>
    我用上面代码不会报错啊!
    -----------------------
    如果说 innerHTML 和 appendchild(document.createTextNode('xx')) 的区别
    首先是HTML标签和实体
    x.innerHTML = "<a href='http://baidu.com'>&amp;百度&amp;</a>";  // 在页面显示为链向百度的 "&百度&" 超链接
    x.appendChild(document.createTextNode("<a href='http://baidu.com'>&amp;百度&amp;</a>")); // 在页面显示为普通字串
    还有就是
    <li id="x">AAA</li><script>
    var x = document.getElementById("x");
    x.appendChild(document.createTextNode("BBB")); // 在AAA后面加入BBB
    x.innerHTML = "BBB";  // 原来的 AAA 都没了,变成了 BBB
    </script>
      

  3.   

    不好意思没有描述清楚,感谢2位。
    其实就是我用li.appendchild(document.createTextNode(message));追加不上内容。
    但是如果用li.innerHTML(message);
    就可以。这是为什么呢?
      

  4.   

    你可以尝试
    把li的childnodes删除光,再appendchild看看
      

  5.   

    建议你用 alert() 把 需要验证的 数据都跟踪一下,然后,再看调整你的代码
      

  6.   

    前者可以在加HTML代码,后者只能是文本
      

  7.   

    除非你大批量的要对dom进行更新,要不最好还是使用createElement,更规范~