2010-09-29 80 views
0

所以我在這裏使用了javascript,jQuery和HTML。基本上我有一個正在創建的按鈕的動態數量,並將每個使用唯一變量調用一個函數。變量保存在一個json變量中。這裏是代碼,因爲它是:javascript代碼中的動態html按鈕

var box = "<font size=\"2\">The following assassins are in your current location:<br/><table width = \"100%\">"; 

    for (var i=0; i<info.length; i++) { 
     if(userid != info[i].playerid){ 
      box += "<tr><td>"+info[i].name+" | rank: "+info[i].rank+"</td><td align=\"right\"><input id='attack' type='button' onclick='loadAttack(userid, info[i].playerid, info[i].name, info[i].rank, location)' value='Attack'/></td></tr>"; 
     }  
    } 
    box += "</table></font>"; 

    $("#assassinBox").html(box);   

框看起來很好,與正確的名稱,排名和按鈕。問題是按下按鈕時,info未定義。我認爲這是因爲按鈕沒有得到它自己的副本,並且在循環結束時超出了數組邊界。我正在努力想出一個解決方案,將onclick函數傳遞給一個唯一變量的方法?

謝謝!

回答

2
box += "<tr><td>"+info[i].name+" | rank: "+info[i].rank+"</td><td align=\"right\"><input id='attack' type='button' onclick='loadAttack(userid, info["+i+"].playerid, info["+i+"].name, info["+i+"].rank, location)' value='Attack'/></td></tr>"; 

這應該有效。雖然如果我是你,我會考慮重寫它不使用內聯事件處理程序,也許使用jQuery或本地DOMElement創建方法構建HTML,而不是串聯HTML字符串。從長遠來看,它使它更容易維護。

+0

嗯我仍然得到的信息是未定義在按鈕被按下時螢火蟲。也許信息變量不在按鈕被按下的域中,使其不確定? – meres 2010-09-29 20:02:06

+0

我做了一個全局變量的信息,它現在的作品,謝謝 – meres 2010-09-29 20:25:55