SetAttribute的s小写,测试通过<div id="nn">
<div my:binding="aa"><div my:binding="a"></div></div>
<div my:binding="bb"><div my:binding="b"></div></div>
</div>
<script>
function AddID(firstNode) 
{     if (firstNode == null) return; 
    var binding = firstNode.getAttribute("my:binding"); 
    if (binding != null && firstNode.nodeType == 1) { 
        
        firstNode.setAttribute("id", binding); 
    }   
    AddID(firstNode.firstChild); 
    AddID(firstNode.nextSibling); 

window.onload=function(){
    var pNode=document.getElementById("nn");
    AddID(pNode.firstChild)
    alert(pNode.innerHTML);
}</script>

解决方案 »

  1.   

    这只是从里面抽出来的一部分而已。
    我alert可以得到所有元素节点的nodeName,可是在获取最后一个元素的nodeName后,还返回了好多undefind。不知道哪错了。
    对了,代码改了下:
    function AddID(firstNode)
    {
        if (firstNode == null) return;    if (firstNode.nodeType == 1) {
            var binding = firstNode.getAttribute("my:binding");
            alert(firstNode.nodeName);
            if (binding != null) firstNode.setAttribute("id", binding);
        }    AddID(firstNode.firstChild);
        AddID(firstNode.nextSibling);
    }
      

  2.   

    那是你里面有文本吧,文本的话没有nodeName