2015-11-05 30 views
1

我試圖寫一個函數與我的頁面中的元素id等於一個字符串,並追加兒童到該元素。但是我對JS並不熟悉,也不知道我的函數有什麼問題。這是功能。 「set」只是一個字符串集的數組(它包含多個名稱)。JavaScript查找元素與字符串作爲編號

function printNetwork(set,id){ 
     console.log("id is "+id); 
     var node=document.getElementById(id); 
     console.log("found"+node); 
     for(var s in set){ 
      var className="leaf"; 
      var content = document.createTextNode("<p class="+className+">"+s+"</p>"); 
      console.log(content); 
      node.appendChild(content); 
     } 
    } 

然後我調用的函數:

var ced ="${commented}"; 
    console.log(ced);//ced is like "[&quot;Mike&quot;]" 
    var cedArr = JSON.parse(ced.replace(/&quot;/g, '"'));//parse it back to set 
    console.log(cedArr); 
    printNetwork(cedArr,"ced"); 

閱讀從控制檯它說:「節點」是foundnull日誌,和「內容」爲「<p class=leaf>0</p>」和使用appendChild失敗。 我的問題是,如何將id傳遞到它通過參數搜索元素的函數中?我習慣了Java的工作方式,現在我對JS的工作方式有些困惑......

建議感謝!

+0

你有id爲'ced'元素在你的DOM? – taxicala

+0

'set'是一個'Array'還是一個'Object'?這裏有一個非常重要的區別,如果它實際上是'Array',則不能使用這裏使用的'for'語法。 ('myArray.forEach(function(s){...'是一個很好的選擇) – Katana314

+0

@ Katana314感謝提醒我!是的for語法不起作用,我試着foreach – OrlandoL

回答

1

似乎工作,我用不同的陣列比你做例子簡單,但我的猜測是,你不必用ID ced任何元素在你的DOM:

function printNetwork(set,id){ 
    console.log("id is "+id); 
    var node=document.getElementById(id); 
    console.log("found"+node); 
    for(var s in set){ 
     var className="leaf"; 
     var content = document.createTextNode("<p class="+className+">"+s+"</p>"); 
     console.log(content); 
     node.appendChild(content); 
    } 
} 

var ced = {"a": "a", "b": "b"}; 
printNetwork(ced,"ced"); 

而且HTML:

<div id="ced"></div> 

http://jsfiddle.net/eakvdr7L/

+0

今天我有幾個測試並發現該元素沒有找到,因爲我把這個JS放在id =「ced」的div之前,而且「set」是一個form [「a」,「b」]的數組,所以我最好改變我的函數格式。謝謝回覆! – OrlandoL