Frage

<a href="" id="someId" onclick="SomeMethod(self);"></a>

Wo Somemethod könnte:

function SomeMethod(item)
{
  item.setAttribute('name', item.id);
}

Statt:

function SomeMethod(itemId)
{
  var someItem;

  someItem = document.getElementById(itemId);
  someItem .setAttribute('name', someItem .id);

}

Dumme Beispiel, aber die Idee ist nicht in der ID schicken selbst, sondern die tatsächliche Kontrolle der Methode aufrufen. Ich schwöre, dass dies getan werden kann, aber noch kein Glück gesucht hat ... zum Teil, weil ich nicht einmal sicher bin, was zu suchen.

Ich dachte, es war selbst, aber selbst scheint nicht zu sein, was ich will, wenn das Skript I Läufe haben.

War es hilfreich?

Lösung

Mit dem this Schlüsselwort.

<a href="" id="someId" onclick="SomeMethod(this);"></a>

Andere Tipps

Sie brauchen eigentlich nicht passieren diese als Argument an die Funktion, weil Sie eine haben klicken -Ereignisobjekts , die Sie zugreifen können. Also:

<a href="" id="someId" onclick="clickEventHandler()"></a>
<script>
function clickEventHandler(event) {

    if (!event) {
        event = window.event; // Older versions of IE use 
                              // a global reference 
                              // and not an argument.
    };

    var el = (event.target || event.srcElement); // DOM uses 'target';
                                                 // older versions of 
                                                 // IE use 'srcElement'
    el.setAttribute('name', el.id);

}
</script>

Ich neige dazu, diesen Ansatz zu verwenden, in alle Funktionen von HTML ruft Attribute: -

onclick="SomeMethod.call(this)"

Dann in dem Javascript tun: -

function SomeMethod()
{
   this.setAttribute('name', this.id);
}

Dies hat einen entscheidenden Vorteil, wenn Sie sich auch direkt an Event-Handler-Eigenschaften in JavaScript-Code zuweisen können: -

document.getElementById("someID").onclick = SomeMethod

Wenn Somemethod nimmt das Context-Element als Parameter wäre es sehr umständlich einzurichten: -

function(id) {
   var elem = document.getElementById(id)
   elem.onclick = function() { SomeMethod(elem); }
}("someID");

Schlimmer noch wäre das Gedächtnis undichter Verschluss.

An diesem Punkt: SomeMethod(this) - this kehrt Fensterobjekt so verwenden Sie es nicht. Der richtige Weg this Schlüsselwort verwenden macht es Kontext relevant, so SomeMethod.call(this) verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top