2017-01-02 83 views
0

AJAX請求返回XML包含這樣的節點添加類元素在循環處理AJAX響應

var folderContent = ''; 
var data = xhttp.responseXML; 
var folders = data.getElementsByTagName("directory"); 
for (var i = 0; i < folders.length; i++) { 
        folderContent += folders[i].childNodes[0].nodeValue; 
       } 
document.getElementById('folders').innerHTML = folderContent; 

我要添加到每個列表項一個類(與每個元素相同)。我應該怎麼做,使用JavaScript?

感謝。

回答

0

它的工作:

var ul = document.createElement('ul'); 
var li; 

for (var i = 0; i < folders.length; i++) { 
    li = document.createElement('li'); 
    li.innerHTML = folders[i].childNodes[0].nodeValue; 
    li.setAttribute('onclick', 'Toggle(this, true)'); 
    li.setAttribute('class', 'first-level'); 
    ul.appendChild(li); 
    } 
document.getElementById('folders').innerHTML = ul.innerHTML; 
0

您可以使用setAttribute設置添加(或更改)屬性。另外我注意到你在總是未定義的元素節點上調用nodeValue。 如果您的目標是將li節點追加到folderContent,那麼您必須在追加到folderContent之前將其序列化爲字符串。

var folderContent = ''; 
    var data = xhttp.responseXML; 
    var folders = data.getElementsByTagName("directory"); 
    var serializer = new XMLSerializer(); 
    var node; 
    for (var i = 0; i < folders.length; i++) { 
     node=folders[i].childNodes[0]; 
     node.setAttribute('class', 'your-class')//sets class attribute to li node 
     folderContent += serializer.serializeToString(node);//serialize li node before and appends it to folderContent 
    } 

希望它有幫助。

+0

我不能援引* *的setAttribute的節點上。另外XMLSerializer是一個C#類,我只需要使用JS。雖然你的建議讓我採取正確的方法,謝謝。 –

+0

@ElijahDollin我很高興你能解決你的問題,但要注意在這個上下文中的XMLSerializer是一個JS對象,並且與c#無關 – pipeur10