1 votes

problème avec dom createelement et innerhtml

/*************** javascript *****************/

function here(getValue) {

    alert(getValue)
}

function aaa() {

    document.getElementById('asd').innerHTML = '<input type="text" name="textfield" onkeyup="here(this.value)" />'
}

function aaa2() {

    var temp = document.getElementById('asd').innerHTML
    document.getElementById('asd').innerHTML = temp+'<input type="text" name="textfield" onkeyup="here(this.value)" />'
}

function dom() {

    var zzz = document.getElementById('asd')

    var inp = document.createElement('input')
    inp.type = 'text'
    inp.name = 'textfield'
    inp.onkeyup = function() {here(this.value)}

    zzz.appendChild(inp)
}

/************************************/

<div id="asd"> 
    <input type="text" name="textfield" onkeyup="here(this.value)" />
</div>

<input type="button" name="Button1" value="Button1" onclick="aaa2()" />
<input type="button" name="Button2" value="Button2" onclick="dom()" />

J'ai besoin d'aide...

Je crée un champ de texte en utilisant dom en cliquant sur le bouton 1, puis je le combine avec le champ de texte en utilisant innerhtml en cliquant sur le bouton 2.

le problème est qu'après avoir combiné le dom createelement avec innerhtml, le champ de texte créé par dom ne peut pas appeler la fonction javascript....

quelqu'un a une solution...

merci...

1voto

Jonathan Fingland Points 26224

Je ne vois rien d'anormal dans le fonctionnement du code (ce n'est peut-être pas la meilleure pratique, mais cela fonctionne).

Testé et fonctionnant sous firefox 3.5. Voir la page de test à http://ashita.org/StackOverflow/innerhtml.html

1voto

Gab Royer Points 4209

Votre problème est le suivant

inp.onkeyup = function() {here(this.value)}

Vous ne pouvez pas définir onkeyup de cette manière s'il n'existait pas auparavant. De plus, cet argument doit être une chaîne de caractères (en gros, le code Javascript à exécuter)

inp.setAttribute('onkeyup','here(this.value)');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X