Je voudrais passer un objet comme paramètre à une fonction Onclick à l'intérieur d'une chaîne. Quelque chose comme follwing:
function myfunction(obj,parentobj){
var o=document.createElement("div");
o.innerHTML='<input type="button" onclick="somelistener(' + obj + ')" />';
parentobj.appendChild(o.firstChild);
}
De toute évidence, cela ne fonctionne pas. Quelqu'un a une idée? THX!
Une version plus complète, comme suggéré par @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>
L'exemple ci-dessus ne fonctionne pas car la sortie de obj
en texte est [Object object]
, Donc essentiellement, vous appelez someListener([Object object])
.
Pendant que vous avez l'instance de l'élément dans o
, liez à son clic en utilisant javascript:
function myfunction(obj,parentobj){
var o=document.createElement("div");
o.innerHTML='<input type="button" />';
o.onClick = function () {
someListener(obj)
}
parentobj.appendChild(o.firstChild);
}
J'ai créé un violon fonctionnel pour vous ici: JSFiddle
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);
}