使用纯 JavaScript 获取 DOM 元素值

IT技术 javascript get element
2021-03-10 13:55:49

这些解决方案之间有什么区别吗?

解决方案1:

function doSomething(id, value) {
  console.log(value);
  //...
}
<input id="theId" value="test" onclick="doSomething(this.id, this.value)" />

...和解决方案2:

function doSomething(id) {
  var value = document.getElementById(id).value;
  console.log(value);
  //...
}
<input id="theId" value="test" onclick="doSomething(this.id)" />

5个回答

更新:问题已编辑。这两个解决方案现在是等价的。

原答案

是的,最值得注意的是!我认为第二个行不通(如果行得通,也不是很便携)。第一个应该没问题。

// HTML:
<input id="theId" value="test" onclick="doSomething(this)" />

// JavaScript:
function(elem){
    var value = elem.value;
    var id    = elem.id;
    ...
}

这也应该有效。

它也适用于元素数组。例子:items[i].id
2021-04-17 13:55:49
你愿意解释为什么你认为你的答案是我想要的吗?
2021-04-17 13:55:49
@Barrosy 获取 id 然后使用 getElementById 当您已经有对元素的引用时是不必要的(解决方案#2)。显式传递参数(解决方案#1)有时是一种很好的编程习惯。
2021-05-02 13:55:49

第二个函数应该有:

var value = document.getElementById(id).value;

那么它们的功能基本相同。

在第二个版本中,您将传递从this.id. 不是元素本身。

所以id.value不会给你你想要的。

您需要使用this.

doSomething(this)

然后:

function(el){
    var value = el.value;
    ...
}

注意:在某些浏览器中,如果您执行以下操作,则第二个会起作用:

window[id].value 

因为元素 ID 是一个全局属性,但这并不安全

只传递元素this而不是用它的 ID 再次获取它是最有意义的

传递对象:

doSomething(this)

您可以从对象中获取所有数据:

function(obj){
    var value = obj.value;
    var id = obj.id;
}

或者通过id唯一的:

doSomething(this.id)

获取对象并在该值之后:

function(id){
    var value = document.getElementById(id).value;  
}

如果我们看效果没有区别 - value将是相同的。然而,还有更多……

解决方案3:

function doSomething() {
  console.log( theId.value );
}
<input id="theId" value="test" onclick="doSomething()" />

如果 DOM 元素有 id 那么你可以直接在 js 中使用它