Frage

Ich habe schon länger ziemlich viel Javascript auf meine Seiten in letzter Zeit, aber haben sie alle im klassischen Sitz-of-the-Hose Art und Weise gelernt. Wenn ich meine Seite will etwas tun, ich googeln und experimentieren, bis ich das Ergebnis, das ich will bekommen.

Ich habe Objekte in meinen Seiten häufig, dass ich aktivieren / deaktivieren möchten, verbergen, anzeigen, etc., aber - unter der strengen Einführung in Javascript verpasst - ich habe keine Ahnung, wie diese Dinge genannt bekommen. Ich klicke auf Objekte mit Firebug öffnen, erwarten einige vollständig qualifizierten Namen für das Objekt zu sehen, aber keine Freude bekommen. Ich muss nur in der Lage sein, so etwas wie form.button.value zu tun = „etwas“, und müssen den Namen des Objekts kennen.

Irgendwelche Ideen?

Danke.

War es hilfreich?

Lösung

Während Sie Javascript-Code ausgeführt wird, haben Sie alle lokalen Variablen im aktuellen Bereich, also wenn Sie den folgenden Code haben:

var myObject = New Object();
myObject.Person = New Object();
myObject.Person.Name = "Mark";
myObject.Person.Gender = "Male";
myObject.Name = "object1";

... Ihr Wurzelobjekt wäre myObject, und Sie beziehen sich Objekte durch die Punktnotation Nachkomme.

Doch dank der Umsetzung des DOM im Browser, erben Sie auch das window Objekt über das this Schlüsselwort. In der Tat, können Sie das this Schlüsselwort out für einfache Situationen heißen lassen, wenn Sie Verschlüsse nicht verwenden. Daher können Sie Javascript-Funktionen auf der obersten Ebene zugreifen, indem Sie nur die Funktionsnamen verwendet wird.

Wenn Sie bestimmte Elemente zugreifen zu können, wie es klingt wie Sie wollen, müssen Sie die DOM lernen, und nicht die Syntax, die Sie darauf hindeutet, wurden (das klingt wie der 1990er Jahre Javascript). Das Root-Element, das Sie wissen müssen, ist das HTMLDocument Objekt, über die document Eigenschaft zugegriffen. Sie können unter Verwendung der Id Methode des Dokumentelementattribute Elemente mit spezifischen Name (nicht getElementById) entdecken. Natürlich hilft es, wenn Sie Ihr Element eine eindeutige Kennung von Anfang an gegeben haben. Sie können auch rekursiv die childNodes Sammlung verwenden manuell durch Elemente zu durchlaufen, bis Sie finden, was Sie wollen. Alternativ, wenn Sie wirklich keine Id liefern können, können Sie auch die getElementsByTagName Methode verwenden, die jedes Element im DOM angeschlossen ist.

Beispiel:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
    <TITLE></TITLE>
    <META NAME="Generator" CONTENT="TextPad 4.6">
    <META NAME="Author" CONTENT="?">
    <META NAME="Keywords" CONTENT="?">
    <META NAME="Description" CONTENT="?">
    <SCRIPT LANGUAGE="Javascript">
        <!--

        function DoSummat()
        {
            var divInside = document.getElementById("Inside");
            divInside.textContent = "This text will appear inside.";
        }

        //-->
    </SCRIPT>
</HEAD>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?">
<FORM>
    <INPUT TYPE="BUTTON" onclick="DoSummat();" NAME="MyButton" VALUE="Press Me">
</FORM>
<DIV ID="Outside">
    <DIV ID="Middle">
        <DIV ID="Inside"></DIV>
    </DIV>
</DIV>
</BODY>
</HTML>

Andere Tipps

Elemente werden unter Verwendung des id Attribut im Allgemeinen identifiziert. Beispiel:

<input type="submit" id="saveButton" value="Save" />

Sie können die getElementById Methode verwenden, um einen Verweis auf ein Element zu erhalten:

var b = document.getElementById('saveButton');
b.value = 'Saving...';

Nun, da Sie die form.button.value="something" Beispiel gab, ich vermute, Sie HTML-Objekte steuern möchten. Sie können sie eine ID, z.B .:

document.getElementById('my_form').button.value = 'something';

Sie sind Frage ist sehr vage, so kann ich Ihnen die Antwort nicht geben Sie benötigen.

Objects kann nicht „aktiviert“ / „deaktiviert“ werden und sie haben keine „Namen“ (sie können eine name Eigenschaft haben, wenn es das ist, was du meinst).

Zum Beispiel gegeben:

var foo = {};

foo ist ein Variable , die einen Wert haben, geschieht, die ein Objekt ist. Das Ziel ist, die Variable (Objekt mit einem „name“). Gegeben:

bar = foo; foo = null;

foo ist jetzt null und das Objekt, das gehalten Foo wird nun als bar gespeichert.

Sie werden nicht in der Lage sein, das zu tun. Der Variablenname ist nicht auf die Variable gebunden, und sie sind nicht zwischen Funktionen übergeben. Das Beste, was Sie tun können, ist eine Funktion schreiben, um eine Zeichenfolge zu nehmen und sie zurück in eine Variable zu beheben:

function printVar(name) {
    console.log(name + ": " + window[name]);
}

Natürlich gibt es ein Los Dinge falsch mit diesem. Ich würde nur machen zwei Protokollierung Anrufe empfehlen:

console.log("foo");
console.log(foo);

oder unter Verwendung der printf-Stil Syntax:

console.log("foo: %o", foo);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top