我正在尝试运行一些JavaScript,但它无效。
我有一个具有两个属性的对象,这两个属性也是对象。
var people = {
me: {
name: "Hello"
},
molly: {
name: "Molly"
}
};
我正在尝试创建一个使用for / in语句和if语句来列出人员属性的函数。
var search = function (x) {
for (var a in people) {
if (people.a.name === x) {
return people.a;
}
}
};
因此该函数循环遍历people的属性并将它们分配给变量a。因此,people.a将等于人的财产。然后该函数返回属性(people.a)。
因此,如果我输入我作为参数x,该函数是否应该返回me对象的属性?我把这段代码放在jsLint和jsHint中并且它通过了,但我决定删除更正因为它们没用。
然后我想在浏览器中打印对象属性:
var print = search("me");
document.getElementById("p").innerHTML(print);
我将此链接到一个html文档,其中
标记为“p”。我已经在html文档中测试了javascript,所以我知道javascript文档已正确链接。
但代码不起作用。有没有人有任何建议?
由于答案,我现在正在工作。但我认为它只会在屏幕上打印“Hello”,而不是{name:“Hello”}。
答案 0 :(得分:3)
您需要使用people[a]
,而不是people.a
。前者查找具有存储在a
中的值名称的属性;后者寻找一个名为“a”的财产,当然不存在。
for (var a in people) {
if (people[a].name === x) {
return people[a];
}
}
另外,我认为你的意思是search("Hello")
,对吧?如果没有,那么它只是var search = function(x) { return people[x]; }
。
答案 1 :(得分:1)
people.a.name
如果要按名称访问项目,则需要使用括号运算符。使用people.a
实际上是在搜索名为“a”的成员,而不是名称与a
的名称相同的成员。
尝试:
people[a].name
代替。
答案 2 :(得分:0)
代码中有4个错误:
people.a
替换为people[a]
innerHTML()
替换为innerHTML
document.getElementById("p").innerHTML = print.name;