我是Jquery / Javascript编程的新手,所以请保持温和;)
以下功能检查是否选择了来自特定组的单选按钮。但是我无法得到:
var checkifonechecked = true;
传递给if语句。它返回一个Uncaught ReferenceError:未定义checkifonechecked。我怎样才能传递这个var?
function stap3() {
$('input[name=ostap2]').each(function() {
if (this.checked) {
var checkifonechecked = true;
}
});
if(checkifonechecked){
$('#stap1, #stap2, #stap4, #stap5, #stap6, #stap7').hide();
$('#stap3').show();
} else {
alert('neen'); }
}
对于任何帮助都有很多,
答案 0 :(得分:4)
您只需要检查实际检查的数量。实际上不需要每个语句或变量
function stap3() {
if($('input[name=ostap2]:checked').length){
$('#stap1, #stap2, #stap4, #stap5, #stap6, #stap7').hide();
$('#stap3').show();
} else {
alert('neen');
}
}
答案 1 :(得分:3)
您的问题是因为您在匿名函数(AKA lambda)中声明了checkifonechecked
变量。一旦匿名函数结束,该变量就不再存在,因此在stap3
函数中尝试使用它将失败并显示“Uncaught ReferenceError”。
您需要在保证执行的地方声明您的变量(例如stap3
函数的开头),如下所示:
function stap3() {
// DECLARE your variable outside the anonymous function.
var checkifonechecked = false;
$('input[name=ostap2]').each(function() // This is the anonymous function.
{
if (this.checked) {
// ASSIGN a value to your variable.
checkifonechecked = true;
}
});
if(checkifonechecked)
{
$('#stap1, #stap2, #stap4, #stap5, #stap6, #stap7').hide();
$('#stap3').show();
}
else
{
alert('neen');
}
}
答案 2 :(得分:1)
您正在检查在不同范围内声明的变量。您需要在更高的范围内声明变量:
function stap3() {
var checkifonechecked = false;
$('input[name=ostap2]').each(function () {
if (this.checked) checkifonechecked = true;
});
if (checkifonechecked) {
$('#stap1, #stap2, #stap4, #stap5, #stap6, #stap7').hide();
$('#stap3').show();
} else {
alert('neen');
}
}
答案 3 :(得分:1)
问题是checkifonechecked的范围,您需要将其移动到stap3函数
function stap3() {
var checkifonechecked = false;
$('input[name=ostap2]').each(function () {
if (this.checked) {
checkifonechecked = true;
}
});
if (checkifonechecked) {
$('#stap1, #stap2, #stap4, #stap5, #stap6, #stap7').hide();
$('#stap3').show();
} else {
alert('neen');
}
}
答案 4 :(得分:0)
你可以发布HTML部分(包含表单的部分),如果你将变量定义为全局,那么,不要重复(var checkifonechecked = true)只使用(checkifonechecked = true)。
现在,为了节省资源,请在找到所选复选框后中断循环,因为只有其中一个复选框可以检查,如果找到了一个复选框,则无需查看其他复选框。