能够给“name”赋任何值;为什么不能给它赋document.getElementById('name'

Able to assign any value to "name" but not able to assign document.getElementById('name') to it why?

本文关键字:name document getElementById 任何值 为什么 不能      更新时间:2023-09-26

我正试图分配document.getElementById('name')到'name',但它没有被分配为什么?

<body>
  <h1>Hello World</h1>
  <input type="text" id="name">
  <script type="text/javascript">
    var name;
    console.log('before change name = ',  name);// [object HTMLInputElement]
    name = 'change value of name';
    console.log('after change name = ', name);//change value of name. name is changeable here
    name = 5;
    console.log('again change name = ', name);// 5. name is changeable here 
    var worker = new Worker('/js/worker.js');
    name = document.getElementById('name');//name is not changeable here why ?
    console.log('assign input name value name = ', name);//[object HTMLInputElement]
    name.onkeyup = function(){
      worker.postMessage({msg:'send to worker'});
    };
    worker.onmessage = function(e){
      console.log(e.data, 'from worker');
    };
  </script>
</body>

我只是想让document.getElementById('name')进入name,但name = document.getElementById('name')这一行对name没有影响,为什么?

这都取决于你想要分配什么。你的问题不太清楚。

如果你试图将'name'(元素)的值设置为'name' (javascript变量)的值,你可以使用:

document.getElementById("name").value = name;

如果你试图将'name'(变量)的值设置为'name'(元素)的值,你可以使用:

name = document.getElementById("name").value; //(As shown in the previous answer)

如果你想在(p, li, td等)的innerHTML中显示'name'(变量)的值,你可以使用:

document.getElementById("name").innerHTML = name;

您将具有id="name"的DOM元素分配给name。您可能需要的是DOM元素的当前值。

name = document.getElementById('name').value;
编辑:

由于您需要的是将事件处理程序附加到元素,因此您需要使用addEventListener()方法:
name = document.getElementById('name');
name.addEventListener("keyup", function() {
    worker.postMessage({msg:"'send to worker'});
});

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener?redirectlocale=en-US& redirectslug = DOM % 2 feventtarget.addeventlistener

似乎我们不能使用'name'作为全局变量的原因是'name'是浏览器窗口对象的属性。它是JavaScript中的内置属性。访问:https://developer.mozilla.org/en-US/docs/Web/API/Window/name

在这里回答:什么是JavaScript中的name关键字?