Javascript 每个()枚举中的PrototypeJS输入值

Javascript 每个()枚举中的PrototypeJS输入值,javascript,html,performance,prototypejs,Javascript,Html,Performance,Prototypejs,为什么下面的HTML/JS在未选中复选框时返回“on”值?这段代码(目前)是实时的 HTML <button type="button" id="init" class="btn btn-primary btn-sm">Init</button> <form id="domains"> <div id="domain1"> <input type="checkbox" name="input1" /> <a

为什么下面的HTML/JS在未选中复选框时返回“on”值?这段代码(目前)是实时的

HTML

<button type="button" id="init" class="btn btn-primary btn-sm">Init</button>

<form id="domains">

  <div id="domain1">
    <input type="checkbox" name="input1" />
    <a>Domain 1</a>
  </div>

  <div id="domain2">
    <input type="checkbox" name="input2" />
    <a>Domain 2</a>
  </div>

</form>
我读了这篇文章,但我正在努力学习JavaScript性能方面的最佳实践,并从中获得更多的基础知识。我的猜测是,在select()方法中使用$utility的次数越多,使用$$实用程序的次数越少,循环次数就越少。下面的函数返回了正确的值,但我需要访问每个“域div”中的其他元素

我想也许我应该使用$F实用程序,但是下面的函数返回了JS错误

未捕获的TypeError:无法读取未定义的属性“toLowerCase”

$F()方法要求元素具有ID,或者已经被原型找到并扩展。它是此构造的一个有用的快捷方式:$(id或reference).getValue()

要完成这里要做的事情,您可以使用“double dollar”方法,但如果您以一个id开始,它将与$(id)的“按id查找,查找子项”方法一样快。select()

第二次尝试失败的原因是您正在使用select('input'),它总是返回一个数组作为结果。如果使用down('input'),则会返回输入本身,这将与$F()一起使用

$('init').observe('click', init);

function init() {
  $('domains').select('div').each(function(domain){
    console.log(domain.select('input')[0].value);
  });
}
function init() {
  $('domains').getElements().each(function(input){
    console.log($F(input));
  });
}
function init() {
  $('domains').select('div').each(function(domain){
    console.log($F(domain.select('input')));
  });
}
$$('#domains div input').each(function(elm){
  console.log($F(elm));
});