2012-08-24 19 views
10

Chciałbym przekazać obiekt jako parametr do funkcji Onclick wewnątrz ciągu znaków. Coś takiego jak następujące:javascript: przekazać obiekt jako argument funkcji onclick wewnątrz łańcucha znaków

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

Oczywiście to nie działa. Ktoś ma jakiś pomysł? DZIĘKI!

bardziej kompletna wersja, jak sugeruje @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

@Austin nie jestem pewien, czy rozumiem swoją odpowiedź c orrect. Ale jak próbowałem w pełnej wersji powyżej, to też nie działa. Czy widzisz problem? – Elizabeth

+0

@ scott.korin Thx Scott. Ale po zmianie wielkości liter nadal nie działa. – Elizabeth

+0

@Austin BTW, nawet jeśli zmienię o.onclick na o.firstChild.onclick, to również nie działa, jeśli jest to potencjalnie problem. – Elizabeth

Odpowiedz

18

Powyższy przykład nie działa, ponieważ wyjście obj do tekstu jest [Object object], więc w zasadzie, dzwonisz someListener([Object object]).

ile masz wystąpienie elementu w o, wiążą się z nim jest kliknięcie przy użyciu javascript:

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

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

    parentobj.appendChild(o.firstChild); 
} 

Stworzyłem skrzypce pracuje dla Ciebie tutaj: JSFiddle

-8

Wystarczy zdać to tak :

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

Przekazywanie "tego" nie działa. Obiekt przekazany jest zdecydowanie * nie * identyfikowalny przez "to". Wycofane. –

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

Mam podobny problem i naprawiam go w ten sposób –

Powiązane problemy