<script>
function UserFolder(id, tabName, isReload, mode, extendPars){
alert(id + "  " + tabName + "  " + isReload +"   "+ mode +"  "+ extendPars);
} function GetUserFolders()
 {
  var str = '[["Number_one","6",0],["Number_two","7",0]]';
  var RtnJson = eval(str);
  var gxwjj = document.getElementById("gxwjj");
 
  for(var i=0; i<RtnJson.length; i++){
var tabName = RtnJson[i][0];
var iFolderID = RtnJson[i][1];
var id = "ZDYF" + iFolderID; //数字不方便用来表示DOM的ID  //如果结点不存在,则做添加处理
if(!document.getElementById(id)){
var SubFolders = RtnJson[i][2];
var newFolder = document.createElement("DD"); //创建DD元素 newFolder.id = id; //给动态创建的DD元素加上一个ID
extendPars = "\'&SubFolders=" + SubFolders + "&fId="+ id +"&iFolderID=" + iFolderID + "&fName=" + tabName + "\'";

if(window.addEventListener){ // Mozilla, Netscape, Firefox
      newFolder.setAttribute("onclick", "UserFolder('UserFolder',\'" + tabName + "\',true,'get'," + extendPars + ")");
     htmls = ">";
    } else { // IE attachEvent
    
extendPars = "\'&SubFolders=" + SubFolders + "&fId="+ id +"&iFolderID=" + iFolderID + "&fName=" + tabName + "\'";
//htmls = " onclick=\"WebMail.UserFolder(\'UserFolder\',\'"+ tabName+"\',true,\'get\',"+ extendPars+"); \"  >" //直接写到文字链接中
     //新改的部分newFolder
     //将点击部分写在DD元素的onclick里面
     htmls = ">";
     newFolder.attachEvent("onclick",function(){ UserFolder('UserFolder',tabName,true,'get',extendPars); });
     //newFolder.onclick = function (){ UserFolder('UserFolder',tabName,true,'get',extendPars); };
    }
    
var html = "<span class=\"IcoMyFolder\">&nbsp;</span><a onfocus=\"blur();\" href=\"javascript:void(0);\" ";
html += htmls;
html += tabName + "</a>";
newFolder.innerHTML = html;
gxwjj.parentNode.insertBefore(newFolder,gxwjj);
}
  }
 } 
</script>
<form name="myform" id="myform" method="post"> <input type="button" value="add Event" onClick="GetUserFolders();">
<dd  onclick="WebMail.Mgoto(this);" id="gxwjj" class="MenuOut"><span id="Icogxwjj"> </span><a onfocus="blur();" href="javascript:void(0);">bbbbbbbb</a></dd>
</form>
 
说明:
在IE下点击add Event按钮便会创建两DD的节点,节点ID为ZDYF+id,并且分别给这两个节点加上一个onclick事件,当点击Number_one和Number_two时,弹出来都是Number_two的信息,问题出在那里呢?怎么样解决?
 

解决方案 »

  1.   

    CSDN换了这个,看起来极其不习惯
      

  2.   

    在IE下改成如下形式就可能了   extendPars = "&SubFolders=" + SubFolders + "&fId="+ id +"&iFolderID=" + iFolderID + "&fName=" + tabName;          
    newFolder.extendPars = extendPars;
    newFolder.tabName = tabName;
         newFolder.onclick = function (){ WebMail.UserFolder('UserFolder',this.tabName,true,'get',this.extendPars); };      引起的原因是闭包问题,闭包为全局变量所以加上this就可以了