Javascript获取元素值

这些解决scheme有什么区别吗?

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

要么

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

是的,最值得注意的是我不认为第二个会起作用(如果是的话,不是很便携)。 第一个应该没问题。

 // HTML <input id="theId" value="test" onclick="doSomething(this)" /> // Javascript function(elem){ var value = elem.value; var id = elem.id; ... } 

也应该工作

第二个function应该有:

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

那么他们基本上是一样的function。

在第二个版本中,你传递从this.id返回的string。 不是元素本身。

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

你需要通过这个元素。

 doSomething(this) 

然后:

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

注意:在某些浏览器中,如果你这样做,第二个浏览器就可以工作:

 window[id].value 

因为元素ID是全局属性,但这不是安全的

这是最有意义的只是传递这个元素,而不是再次获取它的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; }