2010-09-08 2 views
1

créé dynamiquement permet de dire que j'ai une référence de l'élément obtenu ala ...référence de l'élément passant par html

var x=document.getElementById("ID123"); 

Maintenant, je veux inclure une fonction de x sur un élément html créé dynamiquement ala ...

myWin.document.write("<input type='button' data-doit=????? value='Do It' onclick='window.doit(?????);'/>"); 

de sorte que la fonction Doït() peut recréer la référence originale x

function doit() 
{ 
var x = ?????; 
} 

droit maintenant je le fais en obtenant un index numérique de x tel que trouvé via getElementsByTagName et en le passant en paramètre à doit().

Existe-t-il un moyen de le faire?

+0

Pourquoi ne pas simplement passer l'id? – sje397

Répondre

0

je passerais probablement l'ID de x-doit(), ce qui nécessiterait doit() à ressembler à quelque chose comme ceci:

function doit(id) { 
    var x = document.getElementById(id); 
    // etc 
} 

En ce qui concerne la création de l'élément input va, il y a deux façons de le faire. Ceci est similaire à votre solution actuelle (mais non standard):

myWin.document.write('<input ... onclick="doit(' + x.id + ');" />'); 

La solution standard est de créer votre nouvel élément input en utilisant l'API DOM:

var input = myWin.document.createElement('input'); 
input.type = 'button'; 
// other properties 
input.onclick = function() { 
    doit(x.id); 
}; 
// insert new element 
document.getElementById("myform").appendChild(input); 

(Notez que l'insertion de l'élément est un peu plus compliqué dans cette situation - vous devez trouver par programme son emplacement dans le DOM).

Enfin, si vous utilisez jQuery, vous pouvez faire quelque chose ceci:

var input = $('<input type="button" etc />').click(function() { 
    doit(x.id); 
}); 
$('#myform').append(input); 
+0

Ok, c'est un peu plus élégant et plus simple que ce que j'avais fait mais je vais devoir revenir en arrière et ajouter des identifiants aux éléments en question. J'ai d'autres questions à poser. Je comprends qu'ils devraient être uniques. Mais unique dans quelle portée? Une fenêtre particulière? document? frameset? Si je crée une fenêtre ala document.write, alors revenez plus tard recréer à nouveau en utilisant document.write, les identifiants des deux pages peuvent-ils se chevaucher? –

+0

Je n'arrive pas à obtenir la ligne document.getElementById ("myform"). AppendChild (input); Je vois que l'entrée est associée à myWin mais la référence du document ne devrait-elle pas aussi être à myWin? Je veux mettre le bouton dans une nouvelle page. Et cela présuppose l'existence d'un élément avec ID "myform"? Cela pourrait-il être l'étiquette du corps? –

+0

Bonjour Mike. Je supposais que vous aviez déjà des ID attribués aux éléments pertinents de l'extrait de votre question ('var x = document.getElementById (" ID123 ");'). En ce qui concerne l'unicité, je crois comprendre qu'ils doivent être uniques dans un document. – harto

Questions connexes