Obtenir la valeur de L'élément DOM en utilisant JavaScript pur

Y a-t-il une différence entre ces solutions?

Solution 1:

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

// JavaScript:
function doSomething (id, value) {
    // ...
}

...et Solution 2:

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

// JavaScript:
function doSomething(id){
    var value = document.getElementById(id).value;
    // ...
}
56
demandé sur informatik01 2010-11-13 19:02:57

4 réponses

Oui, surtout! Je ne pense pas que le second fonctionnera (et si c'est le cas, pas très portably). Le premier devrait être OK.

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

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

Cela devrait également fonctionner.

64
répondu yorick 2018-07-06 06:30:47

La deuxième fonction devrait avoir:

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

Alors ils sont fondamentalement la même fonction.

31
répondu Evan Mulawski 2010-11-13 16:09:04

Dans la deuxième version, vous passez la chaîne renvoyée par this.id. Pas l'élément lui-même.

Donc id.value Ne vous donnera pas ce que vous voulez.

Vous devez passer l'élément avec this.

doSomething(this)

Puis:

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

Note: Dans certains navigateurs, le second fonctionnerait si vous le faisiez:

window[id].value 

Parce que les ID d'élément sont une propriété globale, mais ce n'est pas sûr .

Il est le plus logique de simplement passer l'élément avec this au lieu de le récupérer à nouveau avec son ID.

9
répondu user113716 2010-11-13 16:09:56

Passez l'objet:

doSomething(this)

, Vous pouvez obtenir toutes les données de l'objet:

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

Ou passez le id seulement:

doSomething(this.id)

Récupère l'objet et après cette valeur:

function(id){
    var value = document.getElementById(id).value;  
}
5
répondu R. Z. 2015-03-29 00:50:57