2011-05-19 100 views
0

所有,的Javascript更新失败

下面是简单的代码,更新与输入的字段由用户输入。但是,更新没有发生。任何人都可以让我知道这个问题吗?

<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> 

试图与document.getElementsByName("nameDisplay").innerHTML但未能

回答

2

HTML应该是这样的

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

Javascript should be this:

​​

工作拨弄http://jsfiddle.net/DarkThrone/B5LP7/

3

nameDisplay不是输入,所以你必须通过设置innerHTML属性,而不是value改变其内容。此外getElementsByName不会在那里工作,你必须设置它的idnameDisplay,并使用getElementById

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

...

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

getElementsByName将返回元素的数组,所以你必须选择的第一要素来获取值:

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

你也可以设置inputid价值和使用getElementById,将其选中。


为了让事情变得更简单,使用jQuery框架:

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

试过..无法正常工作或 – 2011-05-20 00:00:23

+0

所做的更改..越来越不确定,我需要显示的文本输入。 – 2011-05-20 00:08:18

+0

将'onkeypress =“populate()”'改为'onkeypress =“填充”' - 将大括号作为处理程序执行该函数 – Zirak 2011-05-20 00:10:45

1

也许你可以尝试改变:

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

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

但是,如果我可以建议,连击做出那样:
在HTML :

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

然后
在Javascript:

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

document.getElementsById()返回元素的数组,所以速战速决将做到以下几点:

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

一个更BETT呃的解决办法是用id更换name属性及与<em>替换<i>(因为它不再是标准):

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

然后切换你的JS:

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