2009-11-30 1 views
1

J'ai quelques éléments à l'intérieur d'un iframe avec un événement onclick associé, quelque chose comme:Modifier la valeur de l'élément à l'intérieur iframe après l'événement onclick avec javascript

<iframe> 
... 
    <input type="text" onclick="somefunction(this)"/> 
... 
</iframe> 

Dans la fonction appelée je tente de modifier la valeur de l'entrée , rien de spécial:

{ 
... 
foo.value = "changed!" 
... 
} 

a ce stade, je peux voir dans firebug que la valeur a changé, mais lorsque la fonction terminer la valeur ne change pas du tout.

Le même genre de chose avec un onmouseover semble fonctionner.

Des idées?

Merci.

Edit: Modifier erreur code

Répondre

1

'ceci' signifie différentes choses dans les différents contextes

Vu:

<input type="text" onclick="somefunction(this)"/> 

'ce' est l'entrée (car il est appelé comme myInput. onclick())

Mais:

function someFunction(foo) { 
    this.value; 
} 

Vous appelez comme:

someFunction(myInput) 

qui est le même que

window.someFunction(myInput) 

Donc, dans ce contexte, 'ceci' est l'objet de la fenêtre. Utilisez 'foo' à la place (puisqu'il s'agit du nom de l'argument dans la déclaration de fonction).

+0

Vous avez entièrement raison, mais j'ai fait cette erreur tout en écrivant la question ici, est correcte dans le code réel. – MarcosPri

0

La valeur n'est pas définie pour un point iframe. En Javascript, le membre "value" est simplement ajouté à l'objet lorsqu'il est positionné, mais bien sûr non pris en compte par le navigateur.

Pour définir le contenu (ce qui est également le cas pour div), vous devez utiliser:

this.innerHTML = "! Changé";

ou

this.innerText = "CHAINE!";

+0

La question concerne une entrée à l'intérieur d'une iframe, pas l'iframe elle-même (bien que, franchement, l'iframe soit un refrain rouge). – Quentin

+0

Merci. Mais je veux vraiment changer l'entrée dans l'iframe, pas l'iframe lui-même. – MarcosPri

Questions connexes