2017-02-12 46 views
-1

只有基本的JavaScript知識是必需的。如果有人知道請幫助我。 我不知道該怎麼做,但我嘗試了很多方法,但仍然無法通過價值。從td裏面的錨定標記調用javascript函數javascript代碼

簡單地說,我有一個for循環,我有一個td裏面。我想從此td點擊調用javascript函數,但問題是我無法將任何參數傳遞給此函數。

的代碼是在這裏:

function GetContractList(abc) { 
    var data = abc 
    for (var it in data) { 
      tab += "<tr>"; 
      tab += "<td>" + data[it].ContractCode + "</td>"; 
      if (data[it].ContractCode != "") { 
       var Contract = data[it].ContractCode; 
       tab += "<td><a onclick='Delete_User(Contract);'>View</td>"; 
       // tab += "<td><a data=" + data[it].ContractCode + " href='javascript:Delete_User(this.data);'>View</td>"; 
      } 
      else { 
       tab += "<td></td>"; 
      } 

就像你看到的,我試圖參數傳遞到DELETE_USER功能,但語法某處破裂。

tab += "<td><a onclick='Delete_User(Contract);'>View</td>"; 

此行給出錯誤 - 合同未定義。

"<td><a data=" + data[it].ContractCode + " href='javascript:Delete_User(this.data);'>View</td>". 

此行也不會傳遞任何值給函數。 請別人幫我一把。

+0

你錯過了一個關閉的錨點標記 –

+0

@NinaScholz問題不是關閉標記,如果我把它仍然沒有工作 –

+0

契約是一個變量......你將它作爲字符串傳遞。查看生成的html – charlietfl

回答

0

您需要轉義函數參數的引用。

tab += '<td><a href="javascript:Delete_User(\'' + data[it].ContractCode + '\');">View</a></td>'; 
//           ^^        ^^ 

function Delete_User(id) { 
 
    console.log('Delete_User', id); 
 
} 
 

 
var cc = '4711abc', 
 
    tab = '<a href="javascript:Delete_User(\'' + cc + '\');">View</a>'; 
 

 
document.write(tab);

+0

'View'我用過你說過的,但是生成的html就是這樣的 –

+0

在你的字符串中,'='和'+ ='是幹什麼的? –

+0

單循環調用,它將數據附加到同一個tr,多個td一個接一個。而我的頁面是在asp.net mvc中使用的剃鬚刀頁面,所以儘管你的代碼在你的樣本中運行良好,但是在我的代碼中,它會生成一些其他的html。不知道我是否解釋過你是否正確 –

0

嘗試:
var cont = data[it].ContractCode.replace(/"/g, '\\"');
tab += '<td><a onclick="Delete_User(\''+cont+'\');">View</td>";

第一行編碼的所有雙引號
第二行插入合同作爲參數,並圍繞添加單引號它

相關問題