Javascript onkeyup不';不能使用带有数字的ID

Javascript onkeyup不';不能使用带有数字的ID,javascript,html,Javascript,Html,我遇到了一个问题,onkeyup在带有数字的ID中不起作用。例如,id=“lname1” 此代码适用于: <html> <body> Enter your firstname: <input type="text" id="fname" onkeyup="myFunction('fname')"> <br/>Enter your lastname: <input type="text" id="lname" onkeyup="my

我遇到了一个问题,onkeyup在带有数字的ID中不起作用。例如,id=“lname1”

此代码适用于:

<html>
<body>
 Enter your firstname: <input type="text" id="fname" 
 onkeyup="myFunction('fname')">
 <br/>Enter your lastname: <input type="text" id="lname" 
 onkeyup="myFunction('lname')">
 <p>My name is: <span id="demo"></span></p>

 <script>
 function myFunction(ele) {
     var x = document.getElementById(ele).value;
     document.getElementById("demo").innerHTML = x;
 }
 </script>

 </body>
 </html>

输入您的名字:

输入您的姓氏: 我的名字是:

函数myFunction(ele){ var x=document.getElementById(ele).value; document.getElementById(“demo”).innerHTML=x; }
但是,当我将id更改为fname1或lname1时,onkeyup不起作用

代码如下:

<html>
<body>
 Enter your firstname: <input type="text" id="fname" 
 onkeyup="myFunction('fname1')">
 <br/>Enter your lastname: <input type="text" id="lname" 
 onkeyup="myFunction('lname1')">
 <p>My name is: <span id="demo"></span></p>

 <script>
 function myFunction(ele) {
     var x = document.getElementById(ele).value;
     document.getElementById("demo").innerHTML = x;
 }
 </script>

 </body>
 </html>

输入您的名字:

输入您的姓氏: 我的名字是:

函数myFunction(ele){ var x=document.getElementById(ele).value; document.getElementById(“demo”).innerHTML=x; }
这个例子不起作用。为什么? 顺便说一下,ID有数字的原因是因为我动态创建了它们。谁能给我解释一下吗?提前谢谢

为什么?

因为您已经更改了它正在查找的ID(例如,从
fname
更改为
fname1
),但是您没有更改元素的
ID
属性(您仍然有
ID=“fname”

这里根本不需要
id
s,只需将
this
传递给您的处理程序,并删除对
getElementById
的调用:

<html>
<body>
Enter your firstname: <input type="text" onkeyup="myFunction(this)">
<br/>Enter your lastname: <input type="text" onkeyup="myFunction(this)">
<p>My name is: <span id="demo"></span></p>

<script>
function myFunction(ele) {
    var x = ele.value;
    document.getElementById("demo").innerHTML = x;
}
</script>

</body>
</html>
输入您的名字:

输入您的姓氏:
我的名字是:

您根本不需要传递名字。只需传递
。要保留以前的名称,必须使用
+=
而不是
=

函数myFunction(ele){
var x=元素值;
document.getElementById(“demo”).innerHTML+=x;
}
输入您的名字:

输入您的姓氏:
我的名字是:

这是因为您正在传入
fname1
,但是没有具有该ID的元素,因此
x
不会指向任何元素。是的,我编辑了它。但还是没有work@Rouge-恕我直言,通过编辑,它确实有效:它确实。。。(有点?)请注意,您正在覆盖同一元素的内部HTML,因此姓氏将覆盖名字。由于编辑使现有答案无效,我正在还原它。OP可能没有意识到这一点,但他的代码仍然无法按预期工作,因为两个元素都在写入同一元素。因此,它们将不再显示名字+姓氏,而是相互覆盖。@Terry-没错。这是下一个问题。:-)没错,就等着吧……;)@特里-添加了一些内容来提及它。:-)因此,应该允许人们对抽象投票+5;)令人惊叹的!