Gibt es einen Unterschied zwischen diesen Lösungen?
Lösung 1:
function doSomething(id, value) {
console.log(value);
//...
}
<input id="theId" value="test" onclick="doSomething(this.id, this.value)" />
... und Lösung 2:
function doSomething(id) {
var value = document.getElementById(id).value;
console.log(value);
//...
}
<input id="theId" value="test" onclick="doSomething(this.id)" />
javascript
get
element
Adam Halasz
quelle
quelle
Antworten:
Ja , vor allem! Ich denke nicht, dass der zweite funktionieren wird (und wenn ja , nicht sehr portabel ). Der erste sollte in Ordnung sein.
// HTML: <input id="theId" value="test" onclick="doSomething(this)" /> // JavaScript: function(elem){ var value = elem.value; var id = elem.id; ... }
Dies sollte auch funktionieren.
Update: Die Frage wurde bearbeitet. Beide Lösungen sind jetzt gleichwertig.
quelle
items[i].id
Die zweite Funktion sollte haben:
var value = document.getElementById(id).value;
Dann sind sie im Grunde die gleiche Funktion.
quelle
In der zweiten Version übergeben Sie den von zurückgegebenen String
this.id
. Nicht das Element selbst.Also
id.value
gib dir nicht was du willst.Sie müssten das Element mit übergeben
this
.doSomething(this)
dann:
function(el){ var value = el.value; ... }
Hinweis: In einigen Browsern funktioniert der zweite, wenn Sie Folgendes tun:
window[id].value
weil Element-IDs eine globale Eigenschaft sind, dies jedoch nicht sicher ist .
Es ist am sinnvollsten, das Element nur mit zu übergeben,
this
anstatt es erneut mit seiner ID abzurufen.quelle
Übergeben Sie das Objekt:
doSomething(this)
Sie können alle Daten vom Objekt abrufen:
function(obj){ var value = obj.value; var id = obj.id; }
Oder
id
nur das:doSomething(this.id)
Holen Sie sich das Objekt und nach diesem Wert:
function(id){ var value = document.getElementById(id).value; }
quelle
Es gibt keinen Unterschied, wenn wir den Effekt betrachten - der Wert wird der gleiche sein. Es gibt jedoch noch etwas mehr ...
Lösung 3:
function doSomething() { console.log( theId.value ); }
<input id="theId" value="test" onclick="doSomething()" />
Wenn das DOM-Element eine ID hat, können Sie diese direkt in js verwenden
quelle