Question

J'ai récemment ajouté pas mal de javascript à mes pages, mais j'ai tout appris à la mode classique. Lorsque je veux que ma page fasse quelque chose, je recherche et expérimente jusqu'à obtenir le résultat souhaité.

Il y a souvent des objets dans mes pages que je souhaite activer / désactiver, masquer, afficher, etc., mais, ayant manqué l'introduction rigoureuse du javascript, je ne sais pas du tout comment ces éléments sont nommés. Je clique sur les objets avec firebug ouvert, espérant voir un nom qualifié complet pour l'objet, mais je ne reçois aucune joie. J'ai juste besoin de pouvoir faire quelque chose comme form.button.value = & "Quelque chose &"; Et j'ai besoin de connaître le nom de cet objet.

Des idées?

Merci.

Était-ce utile?

La solution

Pendant que vous utilisez du code Javascript, vous avez toutes les variables locales dans la portée actuelle, donc si vous aviez le code suivant:

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

... votre objet racine serait myObject, et vous vous référez aux objets descendants via la notation par points.

Cependant, grâce à l'implémentation du DOM dans le navigateur, vous héritez également de l'objet window via le mot clé this. En fait, vous pouvez laisser le mot clé HTMLDocument en dehors des situations simples, c’est-à-dire lorsque vous n’utilisez pas de fermetures. Par conséquent, vous pouvez accéder aux fonctions Javascript au niveau supérieur en utilisant simplement le nom de la fonction.

Si vous souhaitez accéder à des éléments spécifiques, comme si vous le vouliez, vous devez apprendre le DOM et ne pas utiliser la syntaxe que vous proposez (cela ressemble au code JavaScript des années 1990). L'élément racine que vous devez connaître est l'objet document, accessible via la propriété Id. Vous pouvez découvrir des éléments avec des attributs Name (et non getElementById) spécifiques à l'aide de la méthode childNodes de l'élément de document. Bien sûr, cela aide si vous avez donné à votre élément un identifiant unique dès le départ. Vous pouvez également utiliser récursivement la collection getElementsByTagName pour parcourir manuellement des éléments jusqu'à ce que vous trouviez ce que vous voulez. Sinon, si vous ne pouvez vraiment pas fournir d'identifiant, vous pouvez également utiliser la méthode <=>, qui est attachée à chaque élément du DOM.

Exemple:

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

Autres conseils

Les éléments sont généralement identifiés à l'aide de l'attribut id. Exemple:

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

Vous pouvez utiliser la méthode getElementById pour obtenir une référence à un élément:

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

Comme vous avez donné l'exemple form.button.value="something", j'imagine que vous souhaitez contrôler les objets HTML. Vous pouvez leur attribuer un identifiant, par exemple: & Lt; form id = & "My_form &"; ... puis récupérez les éléments par id de JS, la fonction étant même appelée, getElementById () .

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

Votre question est extrêmement vague, je ne peux donc pas vous donner la réponse dont vous avez besoin.

Object ne peut pas être & activé; " / & "désactivé &"; et ils n'ont pas " noms " (ils peuvent avoir une name propriété, si c'est ce que vous voulez dire).

Par exemple, étant donné:

var foo = {};

foo est une variable dont la valeur est un objet. L'objet n'est pas la variable (objet ayant un & Quot; nom & Quot;). Étant donné:

bar = foo; foo = null;

null est maintenant bar et l'objet que foo tenait est maintenant stocké sous le nom <=>.

Vous ne pourrez pas faire ça. Le nom de la variable n'est pas lié à la variable et n'est pas transmis entre les fonctions. Le mieux que vous puissiez faire est d'écrire une fonction pour prendre une chaîne et la résoudre en une variable:

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

Bien sûr, il y a beaucoup de problèmes dans ce domaine. Je vous recommande simplement de faire deux appels de journalisation:

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

ou, en utilisant la syntaxe de style printf:

console.log("foo: %o", foo);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top