为什么未选中复选框时,下面的HTML / JS会返回“on”值?此代码在tab.my上有效(暂时)。
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>
JS
$('init').observe('click', init);
function init() {
$('domains').select('div').each(function(domain){
console.log(domain.select('input')[0].value);
});
}
我看了this帖子,但我正在尝试学习JavaScript性能方面的最佳实践,并且还要获得更多基础知识。我的猜测是你使用select()方法使用$实用程序越多,使用$$实用程序越少,循环越少。下面的函数返回了正确的值,但我需要访问每个“domain div”中的其他元素。
function init() {
$('domains').getElements().each(function(input){
console.log($F(input));
});
}
我想也许我应该使用$ F工具,但下面的函数返回了JS错误
未捕获的TypeError:无法读取未定义的属性'toLowerCase'
function init() {
$('domains').select('div').each(function(domain){
console.log($F(domain.select('input')));
});
}
答案 0 :(得分:2)
$ F()方法要求元素具有ID,或者已经被Prototype找到并扩展。这是这种结构的一个有用的快捷方式:$(id或reference)。getValue();
要做你在这之后所做的事情,你可以使用“双倍美元”方法,但是如果你用一个id开始它,它会接近,因为没有差别和“按ID查找,找到孩子”一样快“接近$(id).select()。
$$('#domains div input').each(function(elm){
console.log($F(elm));
});
你的第二次尝试失败的原因是因为你正在使用select('input'),它总是返回一个数组作为结果。如果你使用了down('input'),那将返回输入本身,这将与$ F()一起使用。