我最近在我的网页上添加了相当多的javascript,但是却以经典的裤子方式学到了这一切。当我想要我的页面做某事时,我会谷歌并进行实验,直到我得到我想要的结果。

我的页面中经常有我要激活/停用,隐藏,显示等的对象,但是 - 错过了对javascript的严格介绍 - 我不知道这些东西是如何被命名的。我点击firebug打开的对象,期望看到对象的一些完全限定名称,但没有得到快乐。我只需要能够执行类似form.button.value = <!>“某事<!>”的操作,并且需要知道该对象的名称。

有什么想法吗?

感谢。

有帮助吗?

解决方案

当您运行Javascript代码时,您拥有当前范围内的所有局部变量,因此如果您有以下代码:

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

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

但是,由于在浏览器中实现了DOM,您还可以通过window关键字继承this对象。实际上,您可以将HTMLDocument关键字保留为简单情况,即不使用闭包时。因此,您只需使用函数名称即可访问顶级的Javascript函数。

如果你想访问特定的元素,就像听起来你想要的那样,你需要学习DOM,而不是使用你建议的语法(听起来像是20世纪90年代的Javascript)。您需要知道的根元素是document对象,可通过Id属性访问。您可以使用document元素的Name方法发现具有特定getElementById(非childNodes)属性的元素。当然,如果你从一开始就给你的元素一个唯一的ID,它会有所帮助。您还可以递归使用getElementsByTagName集合手动遍历元素,直到找到所需内容。或者,如果您真的无法提供Id,您也可以使用<=>方法,该方法附加到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>

其他提示

通常使用id属性标识元素。例如:

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

您可以使用getElementById方法获取对元素的引用:

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

好吧,因为你给了form.button.value="something"例子,我猜你想要控制HTML对象。您可以为它们分配一个id,例如:<!> lt; form id = <!> quot; my_form <!> quot; ...然后从JS获取元素,因为函数甚至被调用,getElementById()

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

你的问题非常模糊,所以我不能给你你需要的答案。

Object s不能<!>“;激活<!>; / <!>”;取消激活<!>并且他们没有<!> quot; names <!> quot; (他们可以拥有name属性,如果这就是你的意思)。

例如,给定:

var foo = {};

foo是一个变量碰巧有一个对象的值。该对象不是变量(具有<!>“name <!>”;的对象)。给出:

bar = foo; foo = null;

null现在是bar,foo持有的对象现在存储为<=>。

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

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

当然,有一个很多的错误。我建议只进行两次日志记录调用:

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

或者,使用printf样式语法:

console.log("foo: %o", foo);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top