2012-08-24 41 views
10

文字列内のOnclick関数にパラメータとしてオブジェクトを渡したいとします。以下のようなもの:javascript:文字列内のonclick関数への引数としてオブジェクトを渡します。

function myfunction(obj,parentobj){ 
    var o=document.createElement("div"); 
    o.innerHTML='<input type="button" onclick="somelistener(' + obj + ')" />'; 
    parentobj.appendChild(o.firstChild); 
} 

明らかに、これは機能しません。誰もが考えている? THX!テキストにobjの出力が[Object object]ですので、基本的に、あなたはsomeListener([Object object])を呼び出しているので、

より完全なバージョン、@Austin

<!DOCTYPE html> 
<html> 
<body> 
<style type="text/css"> 

</style> 
<p id="test">test</p> 
<p id="objectid"></p> 

<script> 
function test(s){ 
    document.getElementById("test").innerHTML+=s; 
} 

function somelistener(obj){ 
    test(obj.id); 
} 

function myfunction(obj,parentobj){ 
    var o=document.createElement("div"); 
    o.innerHTML='<input type="button" onclick="somelistener(' + obj + ')" />'; 

    o.onclick = function() { 
     someListener(obj) 
    } 
parentobj.appendChild(o.firstChild); 
} 

myfunction(document.getElementById("objectid"),document.getElementById("test")); 

</script> 

</body> 
</html> 
+0

orrect。しかし、上記の完全版で試したように、どちらもうまくいきません。あなたは問題を見ることができますか? – Elizabeth

+0

@ scott.korin Thx Scott。しかし、私は大文字を変更した後、それはまだ動作しません。 – Elizabeth

+0

@Austin BTW、o.onclickをo.firstChild.onclickに変更したとしても、それは潜在的に問題がある場合はどちらも動作しません。 – Elizabeth

答えて

18

により、上記の例を示唆したように動作しません。

あなたはo内の要素のインスタンスを持っているが、それのクリックにバインドJavaScriptを使用して:

function myfunction(obj,parentobj){ 
    var o=document.createElement("div"); 
    o.innerHTML='<input type="button" />'; 

    o.onClick = function() { 
     someListener(obj) 
    } 

    parentobj.appendChild(o.firstChild); 
} 

私はここにあなたのための作業フィドルを作成しました:JSFiddle

-8

はちょうどこのようにそれを渡します:私は私はあなたの答えcを理解している場合わからない@Austin

o.innerHTML='<input type="button" onclick="somelistener(this)" />'; 
+0

「this」を渡すことはできません。渡されたオブジェクトは、「this」によって識別可能ではありません。 Downvoted。 –

0
function myfunction(obj,parentobj){ 
     var o=document.createElement("div"); 
     o.innerHTML="<input type='button' onclick='somelistener("+JSON.stringify(obj)+")'/>"; 
            parentobj.appendChild(o.firstChild); 
      } 
    // my similar problem, function a was called in a jsonArray loop in the dataTable initiation 
    function a(data, type, obj) { 
         var str = ""; 
         str += "<span class='button-group'>"; 
         str +="<a onclick='chooseData1("+JSON.stringify(obj)+")'>[选择]</a>"; 
         str += "</span>"; 
         return str; 
              } 
function chooseData1(data){ 
         console.log(data); 
        } 
+0

私は同様の問題を抱えており、このように修正しています –

関連する問題