2009-11-25 89 views
0

最近我在页面中添加了很多javascript,但是都以经典的座椅风格来学习。当我想让自己的网页去做某些事情时,我会Google和实验,直到获得我想要的结果。可以萤火虫告诉我一个对象的JavaScript名称?

我经常在我的网页,我想激活/关闭,隐藏,显示等对象,但是 - 已经错过了严格的介绍JavaScript的 - 我不知道这些东西是如何被命名。我点击萤火虫打开的对象,期待看到对象的一些完全合格的名称,但没有喜悦。我只需要能够做一些类似form.button.value =“something”的东西,并且需要知道该对象的名称。

任何想法?

谢谢。

+0

在JavaScript中,甚至函数可以是匿名的。你能用一些代码来解释你在做什么时遇到麻烦吗? – Nosredna 2009-11-25 23:28:33

回答

1

而你正在运行的JavaScript代码,您必须在当前范围内的所有局部变量,所以如果你有以下代码:

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

...您的根对象是myObject的,你可以通过点符号来引用后代对象。

但是,由于在浏览器中实现了DOM,因此您还通过this关键字继承了window对象。事实上,您可以将简单情况下的this关键字取消,即当您未使用关闭时。因此,只需使用函数名即可访问顶层的Javascript函数。

如果你想访问特定的元素,就像你想要的那样,你需要学习DOM,而不是使用你所建议的语法(听起来像20世纪90年代的Javascript)。您需要知道的根元素是HTMLDocument对象,可通过document属性进行访问。您可以使用文档元素的getElementById方法发现具有特定Id(而不是Name)属性的元素。当然,如果你从一开始就为你的元素提供了一个独特的ID,它会有所帮助。您也可以递归地使用childNodes集合来手动遍历元素,直到找到所需的元素。或者,如果您确实无法提供Id,则也可以使用getElementsByTagName方法,该方法附加到DOM中的每个元素。

实施例:

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

你的问题非常模糊,所以我不能给你你需要的答案。如果这是你的意思,那么它们不能被“激活”/“停用”,并且它们没有“名称”(它们可以具有name属性)。

例如,给定:

var foo = {}; 

foo可变恰好有一个值,该值是一个对象。该对象不是变量(具有“名称”的对象)。鉴于:

bar = foo; foo = null; 

foo现在null和FOO举行的对象现在存储为bar

0

你将无法做到这一点。变量名不与变量绑定,并且它们不在函数之间传递。你能做的最好是写一个函数来获得一个字符串并将解决回一个变量:

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

当然,有事情不对的一个很多。我建议你只是做两个记录电话:

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

,或者使用printf风格的语法:

console.log("foo: %o", foo); 
1

元件使用id属性一般鉴定。例如:

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

可以使用getElementById方法得到一个引用元素:

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

嘛,因为你给了form.button.value="something"例子,我猜你想控制HTML对象。您可以为它们分配一个ID,例如:< form id =“my_form”...然后通过JS获取元素id,因为该函数甚至称为getElementById()。

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