2011-05-19 7 views
0

Tous,Les mises à jour Javascript échouent

Voici le code simple qui met à jour le champ avec l'entrée entrée par l'utilisateur. Cependant, les mises à jour n'ont pas lieu. Quelqu'un peut-il s'il vous plaît laissez-moi savoir la question ici?

<html> 
    <head> 
     <title>Rooms</title> 
     <script type="text/javascript"> 
     function populate() 
     { 
      var newName = document.getElementsByName("roomNameInput").value; 
      document.getElementsByName("nameDisplay").value = newName; 
     } 
     </script> 
    </head> 
    <body> 
     <h3>Configure: </h3><i name="nameDisplay"></i><br /> 
     Enter the Room name: <input type="text" name="roomNameInput" onkeypress="populate()"><br /> 
    </body> 
</html> 

essayé avec document.getElementsByName("nameDisplay").innerHTML mais échoue

Répondre

2

HTML doit être ce

<h3>Configure: </h3> 
     <em id="nameDisplay"></em><br /> 
     Enter the Room name: <input id="roomNameInput" type="text" onkeyup="populate()"><br /> 

Javascript should be this:

var populate = function(){ 
    var a = document.getElementById('roomNameInput').value; 
    document.getElementById('nameDisplay').innerHTML = a; 
} 

violon travail http://jsfiddle.net/DarkThrone/B5LP7/

3

nameDisplay n'est pas une entrée, donc vous devez modifier son contenu en définissant la propriété innerHTML, non value. Aussi, vous avez getElementsByName ne fonctionnera pas là pour le mettre est id-nameDisplay, et utiliser getElementById

<i id="nameDisplay"></i> 

...

document.getElementById("nameDisplay").innerHTML = newName; 

getElementsByName retourne un tableau d'éléments, de sorte que vous avez pour sélectionner le premier élément pour obtenir la valeur:

var newName = document.getElementsByName("roomNameInput").value; 

Vous pouvez également définir la valeur id du input et utiliser getElementById pour le sélectionner.


Pour rendre les choses plus simples, utilisez jQuery cadre:

function populate() { 
    var newName = $('[name="roomNameInput"]').val(); 
    $("#nameDisplay").text(newName); 
} 
+0

essayé .. ne fonctionne pas non plus –

+0

fait les changements .. s'Undefined où je dois afficher le texte saisi. –

+0

Change 'onkeypress =" populate() "' en 'onkeypress =" populate "' - le double accolade exécute la fonction en l'assignant comme gestionnaire – Zirak

1

vous pouvez peut-être essayer de changer:

document.getElementByName("nameDisplay").value = newName; 

à

document.getElementByName("nameDisplay").innerHTML = newName; 

mais, si je peux suggérer, la pâte à faire comme:
en HTML:

<h3>Configure: </h3><span id="nameDisplay"></span><br /> 

puis
en Javascript:

document.getElementById("nameDisplay").innerHTML = "<i>"+newName+"</i>"; 
2

document.getElementsById() retourne un tableau d'éléments, donc une solution rapide serait de faire ce qui suit:

var newName = document.getElementsByName("roomNameInput")[0].value; 
document.getElementsByName("nameDisplay")[0].innerHTML = newName; 

Un même bett solution er serait de remplacer l'attribut name avec un id et remplacer <i> avec <em> (car il est plus standard):

<em id="nameDisplay"></em> 
<input type="text" id="roomNameInput" onkeypress="populate()" /> 

Mettez ensuite vos JS:

var newName = document.getElementById("roomNameInput").value; 
document.getElementById("nameDisplay")[0].innerHTML = newName;