我最近在我的网页上添加了相当多的javascript,但是却以经典的裤子方式学到了这一切。当我想要我的页面做某事时,我会谷歌并进行实验,直到我得到我想要的结果。
我的页面中经常有我要激活/停用,隐藏,显示等的对象,但是 - 错过了对javascript的严格介绍 - 我不知道这些东西是如何被命名的。我点击firebug打开的对象,期望看到对象的一些完全限定名称,但没有得到快乐。我只需要能够做类似form.button.value =“something”的事情,并且需要知道该对象的名称。
有什么想法吗?
感谢。
答案 0 :(得分:1)
通常使用id
属性标识元素。例如:
<input type="submit" id="saveButton" value="Save" />
您可以使用getElementById
方法获取对元素的引用:
var b = document.getElementById('saveButton');
b.value = 'Saving...';
答案 1 :(得分:1)
好吧,因为你给了form.button.value="something"
示例,我猜你想要控制HTML对象。您可以为它们分配一个id,例如:&lt; form id =“my_form”...然后从JS获取id,因为函数甚至被调用,getElementById()。
document.getElementById('my_form').button.value = 'something';
答案 2 :(得分:1)
当您运行Javascript代码时,您拥有当前范围内的所有局部变量,因此如果您有以下代码:
var myObject = New Object();
myObject.Person = New Object();
myObject.Person.Name = "Mark";
myObject.Person.Gender = "Male";
myObject.Name = "object1";
...你的根对象是myObject,你通过点符号引用后代对象。
但是,由于在浏览器中实现了DOM,您还可以通过window
关键字继承this
对象。实际上,您可以将this
关键字保留为简单情况,即不使用闭包时。因此,您只需使用函数名称即可访问顶级的Javascript函数。
如果你想访问特定的元素,就像听起来你想要的那样,你需要学习DOM,而不是使用你建议的语法(听起来像是20世纪90年代的Javascript)。您需要知道的根元素是HTMLDocument
对象,可通过document
属性访问。您可以使用文档元素的Id
方法发现具有特定Name
(非getElementById
)属性的元素。当然,如果你从一开始就给你的元素一个唯一的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>
答案 3 :(得分:0)
你的问题非常模糊,所以我不能给你你需要的答案。
Object
s无法“激活”/“停用”且它们没有“名称”(如果这就是您的意思,它们可以有name
属性。
例如,给定:
var foo = {};
foo
是一个变量,碰巧有一个对象的值。对象不是变量(具有“名称”的对象)。给出:
bar = foo; foo = null;
foo
现在为null
,foo持有的对象现在存储为bar
。
答案 4 :(得分:0)
你将无法做到这一点。变量名称不与变量绑定,它们不在函数之间传递。你能做的最好的事情是写一个函数来取一个字符串并将其解析回变量:
function printVar(name) {
console.log(name + ": " + window[name]);
}
当然,有一个很多的错误。我建议只进行两次日志记录调用:
console.log("foo");
console.log(foo);
或者,使用printf样式语法:
console.log("foo: %o", foo);