2017-02-12 19 views
-1

基本的なjavascriptの知識が必要です。誰でも助けてください。 私はそれを行う方法がわかりませんが、私は多くの方法でそれを試しましたが、まだ値を渡すことができませんでした。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>"; 
      } 

uが見ることができるように、私は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

@ニナシュショルツ問題はタグを閉じることではなく、まだ置いていない場合は –

+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にmutliple tdを1つずつ追加しています。私のページはasp.net mvcで使用されているかみそりのページですので、urコードは、サンプルコードではうまく動いていますが、私のコードでは、他のHTMLを生成しています。私はあなたが正しいかどうかを永遠に説明したかどうか分からない –

0

試し:最初の行は
二行目は、パラメータとして契約を挿入する任意の二重引用符をエンコードし、周りの単一引用符を追加します
var cont = data[it].ContractCode.replace(/"/g, '\\"');
tab += '<td><a onclick="Delete_User(\''+cont+'\');">View</td>";

それ

関連する問題