0

我有一个未知长度的 Javascript 数组,我想让它的一些字段显示在我的 html 页面中。我试图在我的 js 库中创建一个函数来打印它们,直接通过我的 html 代码调用它

<body onload="parser()">
   <div id="list">
       <script> load_list() </script>
   </div>
</body>

函数 parser() 从 xml 文件中提取信息并将它们放入数组中。函数 load_list 如下

function load_list () {
     document.write ("<ul>");
     for (i=0; i< array.length; i++) {
         document.write ("<li><a href='javascript:change("+array[i].x+")'>");
         document.write (array[i].name);
         document.write ("</a></li>");
     }
}
4

2 回答 2

3

尝试

<div id="list">
</div>

<script>
    var subjects = [{
        x: '1',
        name: 'One'
    }]

    function load_list(){
        var ul = document.createElement('ul');
        document.getElementById('list').appendChild(ul);
        for (i=0; i< subjects.length; i++) {
            var li = document.createElement('li');
            var a = document.createElement('a');
            a.innerHTML = subjects[i].name;
            a.setAttribute('href', "javascript:change("+subjects[i].x+")")
            li.appendChild(a);
            ul.appendChild(li);
        }
    }


    function parser(){

        //do parsing logic


        load_list()
    }

</script>

演示:小提琴

于 2013-04-19T08:31:30.993 回答
2

document.write 基本上已被弃用(非官方)。

进一步阅读: 为什么 document.write 被认为是“坏习惯”?

此外,通过纯文本创建元素也是不明智的,因为它没有正确地将它们添加到 DOM。

尝试这个:

subjects = ["test","test2"];
array = [{x:"test",name:"name"},{x:"test2",name:"name2"}];

for (i=0; i< subjects.length; i++) {
    var li = document.createElement("li");
    var a = document.createElement("a");
    a.setAttribute("href","javascript:change("+array[i].x+")");
    a.innerHTML = array[i].name;
    li.appendChild(a);
    document.getElementById('listUL').appendChild(li);
}

<div id="list">
    <ul id="listUL">

    </ul>
</div>

看到它在这里工作:

http://jsfiddle.net/wdkmz/

于 2013-04-19T08:33:56.537 回答