Domanda

Ultimamente ho aggiunto un po 'di javascript alle mie pagine, ma ho imparato tutto in modo classico. Quando voglio che la mia pagina faccia qualcosa, google ed esperimento fino a quando non ottengo il risultato che desidero.

Nelle mie pagine ho spesso oggetti che desidero attivare / disattivare, nascondere, mostrare, ecc., ma - avendo perso la rigorosa introduzione a javascript - non ho idea di come vengano chiamate queste cose. Faccio clic sugli oggetti con firebug aperto, aspettandomi di vedere un nome completo per l'oggetto, ma non provo gioia. Devo solo essere in grado di fare qualcosa come form.button.value = & Quot; qualcosa & Quot; e ho bisogno di conoscere il nome di quell'oggetto.

Qualche idea?

Grazie.

È stato utile?

Soluzione

Mentre esegui il codice Javascript, hai tutte le variabili locali nell'ambito corrente, quindi se avessi il seguente codice:

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

... il tuo oggetto root sarebbe myObject e ti riferisci agli oggetti discendenti attraverso la notazione punto.

Tuttavia, grazie all'implementazione del DOM nel browser, erediti anche l'oggetto window tramite la parola chiave this. In effetti, è possibile lasciare la parola chiave HTMLDocument per situazioni semplici, ad esempio quando non si utilizzano le chiusure. Pertanto, puoi accedere alle funzioni Javascript al livello più alto semplicemente usando il nome della funzione.

Se vuoi accedere ad elementi specifici, come sembra che tu stia volendo, devi imparare il DOM e non usare la sintassi che stavi suggerendo (che sembra Javascript degli anni '90). L'elemento radice che devi conoscere è l'oggetto document, accessibile tramite la proprietà Id. Puoi scoprire elementi con attributi Name (non getElementById) specifici usando il metodo childNodes dell'elemento documento. Certo, aiuta se hai dato al tuo elemento un ID univoco dall'inizio. Puoi anche utilizzare ricorsivamente la raccolta getElementsByTagName per scorrere manualmente gli elementi fino a trovare quello che desideri. In alternativa, se davvero non puoi fornire un ID, puoi anche usare il metodo <=>, che è attaccato a ogni elemento nel DOM.

Esempio:

<!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>

Altri suggerimenti

Gli elementi sono generalmente identificati usando l'attributo id. Esempio:

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

Puoi usare il metodo getElementById per ottenere un riferimento a un elemento:

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

Bene da quando hai dato l'esempio form.button.value="something", immagino che tu voglia controllare gli oggetti HTML. È possibile assegnare loro un ID, ad esempio: & Lt; form id = & Quot; my_form & Quot; ... e quindi ottenere elementi per ID da JS, come viene persino chiamata la funzione, getElementById () .

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

La tua domanda è estremamente vaga, quindi non posso darti la risposta di cui hai bisogno.

Object s non può essere " attivato " / " disattivato " e non hanno " nomi " (possono avere una proprietà name, se è questo che intendi).

Ad esempio, dato:

var foo = {};

foo è una variabile che sembra avere un valore che è un oggetto. L'oggetto non è la variabile (oggetto con & Quot; nome & Quot;). Dato:

bar = foo; foo = null;

null ora è bar e l'oggetto in possesso di Foo ora è archiviato come <=>.

Non sarai in grado di farlo. Il nome della variabile non è legato alla variabile e non vengono passati tra le funzioni. Il meglio che puoi fare è scrivere una funzione per prendere una stringa e risolverla in una variabile:

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

Ovviamente, ci sono un sacco di cose sbagliate in questo. Consiglio di effettuare solo due chiamate di registrazione:

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

oppure, usando la sintassi in stile printf:

console.log("foo: %o", foo);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top