function getCheckedRadioButton() {
getRadioButtons().forEach(function (t) {
if (t.checked) {
console.log(t);
return t;
}
});
}
上面的函数被调用:
var x = getCheckedRadioButton();
console.log(x);
if (x.className)
{
//do something
}
控制台输出:
input type="radio" id="pvp" name="gameMode" value="0" class="hasTextboxes"
undefined
Uncaught TypeError: Cannot read property 'className' of undefined
我甚至尝试过:
if (getCheckedRadioButton().className)
但它不起作用。
答案 0 :(得分:2)
这一行:
return t;
从此功能返回:
function (t) {
//...
}
不这一个:
getCheckedRadioButton() {
//...
}
你到底想要回来的是什么?只是数组中的第一个匹配结果?您可以使用普通循环而不是使用嵌套函数的循环:
var radios = getRadioButtons();
for (var i = 0; i < radios.length; i++) {
if (radios[i].checked) {
console.log(radios[i]);
return radios[i];
}
}
// return some default if nothing is found?
答案 1 :(得分:1)
您从forEach
的回调(匿名函数)返回,而不是从函数getCheckedRadioButton
返回。函数getCheckedRadioButton
不返回任何内容,因此其返回值为undefined
。
如果要重新加入第一个选中的单选按钮,请使用find
。 find
将返回其回调调用返回的数组中的第一项true
(t.checked
设置为true
的项目)或null
如果没有项目匹配。然后,我们应该将该项目/ null
返回给getCheckedRadioButton
:
function getCheckedRadioButton() {
return getRadioButtons().find(function (t) {
return t.checked;
});
}
答案 2 :(得分:1)
您的回访是指pkts = sniff(count=10)
for pkt in pkts:
if ICMP in pkt:
print 'match!'
的回调。您永远不会返回外部函数,因此.forEach
未定义。虽然x
接受回调,但它是同步的,所以您可以像这样修复它:
.forEach
注意,你应该处理不匹配的可能性(我在这里设置为返回false。空对象function getCheckedRadioButton() {
var returnElement = false;
getRadioButtons().forEach(function (t) {
if (t.checked) {
console.log(t);
returnElement = t;
}
});
return returnElement;
}
也可以用于你的目的)。