原型中数组中的未定义变量

时间:2010-09-30 13:06:58

标签: javascript prototypejs undefined

我有以下代码:

<ul id="litemsd">
 <li class="litemd">
  <input type="checkbox" id="d1" name="d1" />
  <label for="d1">Number One</label>
 </li>
 <li class="litemd">
  <input type="checkbox" id="d2" name="d2" />
  <label for="d2">Numer Two</label>
 </li>
 <li class="litemd">
  <input type="checkbox" id="d3" name="d3" />
  <label for="d3">Numer Three</label>
 </li>
</ul>

在表单的提交观察函数中,我尝试迭代选中的复选框:

$$('li.litemd').pluck('checked').each(function(s) {
  alert(s.next().innerHTML)
});

但是当达到该代码时,firebug中会弹出以下错误:

"s is undefined"

任何提示?

3 个答案:

答案 0 :(得分:0)

$$('li.litemd').pluck('checked').each(function() {
  alert($$(this).next().innerHTML)
});

答案 1 :(得分:0)

.pluck()返回一个值数组(无论你传入的是什么属性名称),所以它不会将结果过滤到checked个,它实际上会返回一个[false, false, false]数组。

相反,我认为你想要这个:

$$('li.litemd input').each(function(s) {
  if(s.checked) alert(s.next().innerHTML)
});

You can give it a try here,请注意向选择器添加了input,因为您正在查看<input> 内的{{1>} <li>的属性},而不是<li>本身。

答案 2 :(得分:0)

我认为你混淆了pluck()处理HTML属性的属性。无论如何,在初始选择器的一部分中添加伪类检查更容易,例如:

$$('li.litemd input:checked').each(function(s) {
      alert(s.next().innerHTML);
  });

Example