Pregunta

He estado añadiendo un poco de javascript a mis páginas últimamente, pero he aprendido que todo en el clásico asiento-de-los-pantalones de moda.Cuando quiero que mi página para hacer algo, google y experimentar hasta conseguir el resultado que desea.

A menudo me han objetos en mis páginas que quiero activar/desactivar, ocultar, mostrar, etc., pero habiendo perdido la rigurosa introducción a javascript - no tengo ni idea de cómo estas cosas obtienen su nombre.I haga clic en los objetos con firebug abierta, esperando ver algún nombre totalmente calificado para el objeto, pero no la alegría.Sólo tengo que ser capaz de hacer algo como formulario.el botón.valor="algo", y la necesidad de saber el nombre de ese objeto.

Alguna idea?

Gracias.

¿Fue útil?

Solución

Mientras ejecuta el código Javascript, tiene todas las variables locales en el ámbito actual, por lo que si tuviera el siguiente código:

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

... su objeto raíz sería myObject, y usted hace referencia a objetos descendientes a través de la notación de puntos.

Sin embargo, gracias a la implementación del DOM en el navegador, también hereda el objeto window a través de la palabra clave this. De hecho, puede omitir la palabra clave HTMLDocument para situaciones simples, es decir, cuando no está utilizando cierres. Por lo tanto, puede acceder a las funciones de Javascript en el nivel superior simplemente usando el nombre de la función.

Si desea acceder a elementos específicos, como suena como si lo deseara, necesita aprender el DOM y no usar la sintaxis que estaba sugiriendo (eso suena como Javascript de los años 90). El elemento raíz que necesita saber es el objeto document, al que se accede mediante la propiedad Id. Puede descubrir elementos con atributos específicos Name (no getElementById) utilizando el método childNodes del elemento del documento. Por supuesto, ayuda si le has dado a tu elemento una identificación única desde el principio. También puede usar recursivamente la colección getElementsByTagName para iterar manualmente a través de elementos hasta que encuentre lo que desea. Alternativamente, si realmente no puede proporcionar un Id, también puede usar el método <=>, que se adjunta a cada elemento en el DOM.

Ejemplo:

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

Otros consejos

Los elementos

generalmente se identifican usando el atributo id. Ejemplo:

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

Puede usar el método getElementById para obtener una referencia a un elemento:

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

Bueno, dado que dio el ejemplo form.button.value="something", supongo que desea controlar los objetos HTML. Puede asignarles un id, por ejemplo: & Lt; form id = & Quot; my_form & Quot; ... y luego obtener elementos por id de JS, como incluso se llama a la función, getElementById () .

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

Su pregunta es muy vaga así que no te puedo dar la respuesta que usted necesita.

Objects no puede ser "activado"/"desactivar" y no tienen "nombres" (que puede tener un name de la propiedad, si eso es a lo que te refieres).

Por ejemplo, dado que:

var foo = {};

foo es un variable que pasa a tener un valor que es un objeto.El objeto no es la variable (objeto de tener un "nombre").Dado:

bar = foo; foo = null;

foo es ahora null y el objeto que foo celebró ahora se almacena como bar.

No podrás hacer eso. El nombre de la variable no está vinculado a la variable, y no se pasan entre funciones. Lo mejor que puede hacer es escribir una función para tomar una cadena y resolverla nuevamente en una variable:

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

Por supuesto, hay un montón de cosas mal con esto. Recomiendo simplemente hacer dos llamadas de registro:

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

o, utilizando la sintaxis de estilo printf:

console.log("foo: %o", foo);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top