Pode firebug dizer-me o nome javascript de um objeto?
-
05-07-2019 - |
Pergunta
Eu fui adicionando um pouco de javascript para minhas páginas ultimamente, mas tenho aprendido tudo isso em moda clássica assento-de-o-calças. Quando eu quero minha página para fazer alguma coisa, eu google e experimentar até conseguir o resultado que eu quero.
Com freqüência tenho objetos em minhas páginas que eu quero para ativar / desativar, ocultar, show, etc., mas - depois de ter falhado a introdução rigorosa para javascript - Não tenho a menor idéia de como estas coisas se nomeado. Eu clicar em objetos com abrir o Firebug, esperando ver algum nome totalmente qualificado para o objeto, mas não obter alegria. Eu só preciso ser capaz de fazer algo assim form.button.value = "algo", e precisa saber o nome daquele objeto.
Todas as idéias?
Graças.
Solução
Enquanto você estiver executando código Javascript, você tem todas as variáveis ??locais no escopo atual, por isso, se você tivesse o seguinte código:
var myObject = New Object();
myObject.Person = New Object();
myObject.Person.Name = "Mark";
myObject.Person.Gender = "Male";
myObject.Name = "object1";
... o seu objeto raiz seria myObject, e você se referir a objetos descendentes através da notação de ponto.
No entanto, graças à implementação do DOM no navegador, você também herdar o objeto window
via a palavra-chave this
. Na verdade, você pode deixar o this
palavra-chave para fora para situações simples ou seja, quando você não estiver usando encerramentos. Portanto, você pode acessar as funções de JavaScript no nível superior usando apenas o nome da função.
Se você quiser elementos de acesso específicos, como parece que você está querendo, você precisa aprender o DOM, e não usar a sintaxe que você estava sugerindo (que soa como 1990 Javascript). O elemento raiz que você precisa saber é o objeto HTMLDocument
, acessada através da propriedade document
. Você pode descobrir elementos com Id
específico (não Name
) atributos usando o método getElementById
do elemento documento. Claro, ajuda se você deu o seu elemento de uma identificação única desde o início. Você também pode recursivamente usar a coleção childNodes
iterar manualmente através de elementos até encontrar o que você quer. Alternativamente, se você realmente não pode fornecer um ID, você também pode usar o método getElementsByTagName
, que é anexado a cada elemento no DOM.
Exemplo:
<!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>
Outras dicas
Os elementos são geralmente identificadas usando o atributo id
. Exemplo:
<input type="submit" id="saveButton" value="Save" />
Você pode usar o método getElementById
para obter uma referência a um elemento:
var b = document.getElementById('saveButton');
b.value = 'Saving...';
Bem, desde que você deu o exemplo form.button.value="something"
, eu estou supondo que você quer objectos HTML controle. Você pode atribuir-lhes uma identificação, por exemplo .:
Você está questão é extremamente vaga, então eu não posso lhe dar a resposta que você precisa.
Object
s não pode ser "ativado" / "desativado" e eles não têm "nomes" (eles podem ter uma propriedade name
, se é isso que você quer dizer).
Por exemplo, dado:
var foo = {};
foo
é uma variável que acontece de ter um valor que é um objeto. O objectivo não é a variável (objecto tendo um "nome"). Dado:
bar = foo; foo = null;
foo
é agora null
eo objeto que foo realizada está agora armazenado como bar
.
Você não será capaz de fazer isso. O nome da variável não está vinculado à variável, e eles não estão passados ??entre funções. O melhor que você pode fazer é escrever uma função para tirar uma corda e resolvê-lo de volta para uma variável:
function printVar(name) {
console.log(name + ": " + window[name]);
}
É claro que há um muito de coisas de errado com isso. Eu recomendo apenas fazer duas chamadas de registro:
console.log("foo");
console.log(foo);
ou, usando a sintaxe de estilo printf:
console.log("foo: %o", foo);