首页 新闻 会员 周边 捐助

为什么这个js在table里面打不不出来?

0
悬赏园豆:200 [已解决问题] 解决于 2014-06-15 09:16

<script type="text/javascript" src="AJA.js"></script>

 <script type="text/javascript">
 function funa(){
  sendDate({
  url:"table?send="+Math.random(),
  success:function(xml){
  var table = document.getElementById("table");
   var root = xml.documentElement;
   var areas = root.childNodes;
   for(var i = 0; i<areas.length;i++){
    var area = areas[i];
    var tr = document.createElement("tr");         
    for(j=0;j<3;j++){
     var td = document.createElement("td");
     td.appendChild(document.createTextNode(area.childNodes[j].firstChild.nodeValue));
     tr.appendChild(td);
    }
    table.appendChild(tr);
   }
    
  }
  });
 }
 </script>

 

全部都是正常但就是打不出数据,为什么啊 !

问题补充:

 <script type="text/javascript" src="AJA.js"></script>
 <script type="text/javascript">
 function funa(){
  sendDate({
  url:"table?send="+Math.random(),
  success:function(xml){
  var table = document.getElementById("table");
   var root = xml.documentElement;
   var areas = root.childNodes;
   for(var i = 0; i<areas.length;i++){
    var area = areas[i];
    var tr = document.createElement("tr");    
    for(j=0;j<3;j++){
     var td = document.createElement("td");
     td.appendChild(document.createTextNode(area.childNodes[j].firstChild.nodeValue));
     tr.appendChild(td);
    }
    table.appendChild(tr);
   } 
  }
  });
 }
 </script>
  </head>
 
  <body onload="funa();">
    <table border="1px" cellpadding="0" cellspacing="0" id="table">
     <tr>
      <td>id</td>
      <td>name</td>
      <td>sex</td>
     </tr>
    </table>
  </body>
</html>

 

这是HTML全部代码

CQGYT的主页 CQGYT | 初学一级 | 园豆:5
提问于:2014-06-14 15:30
< >
分享
最佳答案
1

先执行一下document.createTextNode(area.childNodes[j].firstChild.nodeValue),看能执行成功么,感觉好像是这里出错了.下面就没走

收获园豆:140
只会造轮子 | 老鸟四级 |园豆:2274 | 2014-06-14 17:28

打出来一个Object

CQGYT | 园豆:5 (初学一级) | 2014-06-14 17:33

@CQGYT: 那输出一下td.innerHtml

只会造轮子 | 园豆:2274 (老鸟四级) | 2014-06-14 17:35

@CQGYT:  

tr.innerhtml

table.innerhtml

都输出一下,看看是哪一步没有添加进去.

只会造轮子 | 园豆:2274 (老鸟四级) | 2014-06-14 17:36

@发粪图墙: 打出来了我需要的值,但还是没在IE显示出来

CQGYT | 园豆:5 (初学一级) | 2014-06-14 17:37

@CQGYT: 都打出来了

就是不知道怎么不显示?

打出td显示的是最后的字符串

打出tr显示的是最后一个tr里面的值

打出table显示一个TBODY和所有的tr   td

CQGYT | 园豆:5 (初学一级) | 2014-06-14 17:46

@CQGYT:

亲,你的table 是新建的,你没有给他父级容器,

就像tr.appendChild(td) 一样,你需要把table也放到一个页面上有的容器里面,

现在你只是创建了一个table但是是在内存里的,没有放到页面上去.

只会造轮子 | 园豆:2274 (老鸟四级) | 2014-06-14 17:48

@CQGYT: 
类似于 document.getElementByTagName("body")[0].addendChild(table);

把这句加在你的代码的最下面.

只会造轮子 | 园豆:2274 (老鸟四级) | 2014-06-14 17:49

@发粪图墙: 加上了他给了我一个对象不支持此属性或方法,我把HTML的全部代码发上来了,你看一下!

CQGYT | 园豆:5 (初学一级) | 2014-06-14 17:57

@CQGYT: 

<html>
<head>
    <title>asdf</title>
    <script type="text/javascript" src="AJA.js"></script>
    <script type="text/javascript">
        function funa() {
            var table = document.getElementById("table");
            var tr = document.createElement("tr");
            var td = document.createElement("td");
            td.appendChild(document.createTextNode("123231"));
            tr.appendChild(td);
            var td = document.createElement("td");
            td.appendChild(document.createTextNode("123231"));
            tr.appendChild(td);
            var td = document.createElement("td");
            td.appendChild(document.createTextNode("123231"));
            tr.appendChild(td);
            table.appendChild(tr);
        }
    </script>
</head>
<body onload="funa();">
    <table border="1px" cellpadding="0" cellspacing="0" id="table">
        <tr>
            <td>id</td>
            <td>name</td>
            <td>sex</td>
        </tr>
    </table>
</body>
</html>
只会造轮子 | 园豆:2274 (老鸟四级) | 2014-06-14 18:15

@发粪图墙: 是不是浏览器有问题啊?

你给我这代码也执行不了?

CQGYT | 园豆:5 (初学一级) | 2014-06-14 18:24

@CQGYT: 你的是IE几.?

只会造轮子 | 园豆:2274 (老鸟四级) | 2014-06-14 18:25

@CQGYT: 只有这个table不行,我用下拉框option都打得出来

CQGYT | 园豆:5 (初学一级) | 2014-06-14 18:26

@发粪图墙: IE8

CQGYT | 园豆:5 (初学一级) | 2014-06-14 18:30
其他回答(3)
0

可以调试跟踪下,请求是否正常,回调是否正确执行。

另外建议直接用数组拼接html字符串来处理。性能会好很多。

收获园豆:20
Roy Zhang | 园豆:336 (菜鸟二级) | 2014-06-14 17:08

回调完全正常,同时可以用nodeValue得到我需要的值

 

但我用的是ie浏览器字符串拼接不适合我!

支持(0) 反对(0) CQGYT | 园豆:5 (初学一级) | 2014-06-14 17:11

@CQGYT: 字符串拼接跟用什么浏览器无关。既然都正常,你在你的success里面加入debugger;调试一下应该就能发现问题了。

支持(0) 反对(0) Roy Zhang | 园豆:336 (菜鸟二级) | 2014-06-14 17:36
1

一看这代码很亲切啊,以前就这么写的,这段代码很“原生”,结果就是很容易出错,我给你的建议,1.用Json格式换XML,XML那个解析说实话,容易出错,2.学下Jquery,用Apprend替代JS的appendChild。这是我的一段代码,请参靠:

 success: function (data) {
                    var str = "<div id=\"UserList\" style=\"border:1px solid #cfcfcf;background-color:#fefcfc; position:absolute;display:none;z-index: 100000; padding:4px;\">";
                                           for (var name in data) {
                            str += "<div style=\"height:30px; line-height:30px;\">" + name + "</div><ul class=\"clearFix\">";
                                                        str += "</ul>";
                        }
                    }
                    str += "</div>";
                    $(document.body).append(str);
收获园豆:20
happydaily | 园豆:260 (菜鸟二级) | 2014-06-14 17:10

谢谢!我是一个初学者,Jquery暂时了解有限!

支持(0) 反对(0) CQGYT | 园豆:5 (初学一级) | 2014-06-14 17:13

@CQGYT: 把要动态显示的内容拼成一个字符串,比如var str="<tr><td>"+数据1+"</td></tr>";

然后$("#table").append(str),就好了。

支持(0) 反对(0) happydaily | 园豆:260 (菜鸟二级) | 2014-06-14 17:45
0
<html>
<head>
    <title>asdf</title>
    <script type="text/javascript" src="AJA.js"></script>
    <script type="text/javascript">
        function funa() {
            var table = document.getElementById("table");
            var tr = document.createElement("tr");
            var td = document.createElement("td");
            //td.appendChild(document.createTextNode("123231"));
            td.innerHTML = "123";
            tr.appendChild(td);
            td = document.createElement("td");
            //td.appendChild(document.createTextNode("123231"));
            td.innerHTML = "456";
            tr.appendChild(td);
            td = document.createElement("td");
            //td.appendChild(document.createTextNode("123231"));
            td.innerHTML = "789";
            tr.appendChild(td);
            table.appendChild(tr);
        }
    </script>
</head>
<body onload="funa();">
    <table border="1px" cellpadding="0" cellspacing="0" id="table">
        <tr>
            <td>id</td>
            <td>name</td>
            <td>sex</td>
        </tr>
    </table>
</body>
</html>


试试这个呢?

收获园豆:20
I,Robot | 园豆:9783 (大侠五级) | 2014-06-14 21:47

还是不行,应该是浏览器的问题,我下了一个火狐就行了,我也不晓得怎么回事了!

支持(0) 反对(0) CQGYT | 园豆:5 (初学一级) | 2014-06-15 09:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册