【发布时间】:2012-12-11 14:05:27
【问题描述】:
我是 jquery 新手,遇到了问题,需要专家的帮助。
这是我的代码
for (val in list) {
var result = $.grep(node, function(e){
return e.id === list[val].Id;
});
if (result === 0)
// do something
}
当我尝试在我的身上传递 JSLint 时,我得到了这个错误
#1 Don't make functions within a loop.
我知道我在 jquery grep 函数中创建函数的问题 但是我被困在如何将我的函数移到循环之外,将它分配给一个变量然后调用它。因为我的函数正在谈论一个论点 e。我试过这样的
var Visible = function (e, list, val) {return e.id === list[val].Id;};
for (val in list) {
var result = $.grep(node, Visible(e, list, val));
}
但是现在 jslint 给出了一个错误,
#1 'e' was used before it was defined.
var result = $.grep(node, Visible(e)); // Line 125, Pos 69
//--------------------------------------------- ----------------------
这是数据
node: Array[5]
0: HTMLTableRowElement
1: HTMLTableRowElement
2: HTMLTableRowElement
3: HTMLTableRowElement
list: Array[5]
0: Object
0: "cc"
1: "ss"
Id: "000"
1: Object
2: Object
现在我发现列表的哪个元素存在 html 元素。如果列表中的任何元素和 htmlelement 不存在,那么我 r=create one 我正在通过 result === 0 检查它 什么可以解决这个问题。任何帮助将不胜感激 谢谢
【问题讨论】:
-
你想用这段代码实现什么?
-
什么是
node?$.grep将返回一个数组,因此它永远不会等于零。帮助理解代码的目标 -
你可以使用 jQuery 的
$.each来解决这个警告。 -
节点基本上是一些html元素数组
-
好吧,我正在做的是我发现 hmlt 元素 elreay 是否存在。节点包含 html 元素,我正在将列表中的 id 与所有节点元素 id 进行一一比较