2017-04-26 4 views
0

私は、それが配置されているテーブル行のIDを取得する関数を呼び出すことによって問題を解決しました。HTMLタグ内で関数にデータを渡す方法は?

私はこのコードをいくつかの異なるものをテーブルにソートしています。問題はそうのようなHTMLタグ内に呼び出された関数にデータを渡すことである。 See reference here

$.when(document, getTournamentsData()).done(function(){ 
var output = ""; 
$.each(tournamentsData, function(key, data){ 
     output += "<tr class='data_row "+data.isOpen+"' id='"+data._id+"'>"; 
     output += "<td>" + (key+1) + "</td>"; 
     output += "<td><b>" + data.name + "</b></td>"; 
     output += "<td>Start: " + data.begintime + "<br>Slut: " + data.endtime + "</td>"; 
     output += "<td><input class='btn btn-primary' type='button' value='Se beskrivelse' onclick='showTourDescription(data.description)'/></td>"; 
     output += "<td><input class='btn btn-primary' type='button' value='Se billede' onclick='showPic(data.image)'/></td>"; 
     output += "<td>Max antal: "+ data.max_teams +"<br>Tilmeldte: "+ data.teams.length +"</td><br>"; 
     output += "<td><input class='btn btn-primary' type='button' value='Se deltagere' onclick='showMembers(data.teams)'/></td>"; 
     output += "<td>" + prizes(data.prices) + "</td>";                        
     output += "</tr>"; 
}); 
output += ""; 
$('#data_insert').append(output); 

})。これは完全なスクリプトです

「のデータが定義されていません」

すべての私は、関数で行うには、データをコンソールにある、と私はエラーを取得するhttps://github.com/Jakobtottrup/OptekSemester2/blob/master/Web/public/js/tournaments_admin.js

+1

tournamentsDataをコンソールにエコーして、そこに何かがあることを確認しましたか?データが定義されていない場合は、tournamentsDataもnullまたは定義されていない可能性があります。 – Snowmonkey

+0

はい、他の "data"変数も正常に動作します。関数呼び出しの中の変数だけです – Christian

+0

tournamentsDataをパラメータとして.doneコールバック関数に渡すことを忘れていませんか?私はそれがどこに定義されて表示されません... –

答えて

0

UPDATE:あなたは、文字列としてデータを渡しているように見えます。それが動作するかどうかを参照してください

$.each(tournamentsData, function(data) { 

onclick='showTourDescription(" + data.description + ")

+0

へのリンクで更新しました。しかし、他のすべての変数(fx "data.isOpen")が正常に機能するので、データは正しく渡されています - 関数呼び出し内のものだけが動かない – Christian

+0

Help私は理解する。 getTournamentsData()はいくつかの配列データを返しており、それぞれの項目に対して、html文字列を作成するためにループしています。正しい?私のコードを試しましたか? – Ovais

+0

何が起こっているのかは、値ではなくdata.description(文字列 'data.description')を渡していることです。引用符で囲まれた文字列を終了し、値を連結してから引用した文字列を再起動します。 – Snowmonkey

0

// list tournaments 
 
$.when(document, getTournamentsData()).done(function(){ 
 
    var output = ""; 
 
    $.each(tournamentsData, function(key, data){ 
 
      output += "<tr class='data_row "+convertBoolean(data.isOpen)+"' id='"+data._id+"'>"; 
 
      output += "<td>" + (key+1) + "</td>";                           // index 
 
      output += "<td><b>" + data.name + "</b></td>";                         // navn 
 
      output += "<td>Start: " + data.begintime + "<br>Slut: " + data.endtime + "</td>";                // start/slut 
 
      output += "<td><input class='btn btn-primary' type='button' value='Se beskrivelse' onclick='showTourDescription("+data.description+")'/></td>";  // beskrivelse TODO 
 
      output += "<td><input class='btn btn-primary' type='button' value='Se billede' onclick='showPic("+data.description+")'/></td>";      // billede 
 
      output += "<td>Max antal: "+ data.max_teams +"<br>Tilmeldte: "+ data.teams.length +"</td><br>";             // hold 
 
      output += "<td><input class='btn btn-primary' type='button' value='Se deltagere' onclick='showMembers("+data.teams"+)'/></td>";      // medlemmer 
 
      output += "<td>" + prizes(data.prices) + "</td>";                        // præmier 
 
      output += "</tr>"; 
 
    });

に連結し、自分自身を私はあなたのコードを撮影した、とあなたはHTML文字列で行われてきたようにイベントハンドラも。あなたがする必要があるすべてでなければなりません。

+0

私はあなたのソリューションを試しましたが、 "unexpected string" on> onclick = showMembers( "+ data.teams" +) '< – Christian

+0

"+ data.teams +"ではなく "+ data.teams" +を作成している可能性がありますか?最後のプラス見積もりをメモしてください – Snowmonkey

+0

私はクリスチャンという意味を見ていますか? – Snowmonkey