sdlklhd 发表于 2008-2-19 15:51

appendChild类型不匹配问题

我的页面上有两个按纽btn1,btn2.btn1用来生成文本框,btn2将文本框的ID属性的值写入页面中的一个DIV中,但在写入过程中,提示:类型不匹配.
代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
  <script language="javascript">
        <!--
                var i=0;
                function insertText()
                {
                        i+=1;
                        var txt=document.createElement("<input type='text' />");
                        txt.id="txt"+i;
                        document.body.childNodes[0].appendChild(txt);
                }
                function listName()
                {

                        var m=document.all["f1"].childNodes.length;
                        for(var j=0;j<=m;j++)
                        {
                                if(document.all["f1"].childNodes[j].type=="text")
                                {
                                        var txt=document.all["f1"].childNodes[j].id;
                                        [color=Red]document.body.childNodes[0].appendChild(txt);[/color]
                                }
                        }

                }
        //-->
  </script>
</HEAD>

<BODY>
  <form name="f1">
        <input type="button" name="btn1" value="btn1" hideFocus="true" onClick="insertText()" /><br>
        <input type="button" name="btn2" value="btn2" onClick="listName()" />
       
  </form>
  <div id="div1" style="border:5 solid red;width:100;height:200;position:relative;" contentEditable="true"></div>
</BODY>
</HTML>

supertm 发表于 2008-2-19 16:07

var txt
for ...
{
    txt = txt + document.all["f1"].childNodes[j].id;
}
document.getElementById('div1').innerHTML = txt

appendChild添加的是元素节点而不是属性

lmhllr 发表于 2008-2-19 16:12

#2说的是,而且这个程序 IE only

sdlklhd 发表于 2008-2-19 16:30

还是不行啊.

sdlklhd 发表于 2008-2-19 16:31

提示:对象不支持此操作.
代码;
                function listName()
                {

                        var m=document.all["f1"].childNodes.length;
                        for(var j=0;j<m;j++)
                        {
                                if(document.all["f1"].childNodes[j].type=="text")
                                {
                                        var txt=document.all["f1"].childNodes[j].id;
                                        document.getElementById("div1").innerHTML(txt);
                                }
                        }

                }
顺便问一下:你的var txt及txt=txt+是什么意思?

supertm 发表于 2008-2-19 16:40

document.getElementById("div1").innerHTML = txt;
不是innerHTML(txt);
-- 你的var txt及txt=txt+是什么意思?
没什么意思,我以为你要把所有符合的节点id都连在一起呢

sdlklhd 发表于 2008-2-19 17:07

解决了.
感谢.

页: [1]

编程论坛