Javascript jqueryif返回总是false
我这里有两个问题Javascript jqueryif返回总是false,javascript,jquery,if-statement,onclick,Javascript,Jquery,If Statement,Onclick,我这里有两个问题 检查此$isitchecked=$(“#组”+groupnumber)的if返回始终为false,即使类已“选中” 尽管groupnumber仍然只适用于第一组 var progressProcent=0; var-groupnumber=1; $(“#组”+groupnumber+”输入[type=“radio”]”。单击(函数(){ $whatgroup=“#组”+组号; $isitchecked=$(“#组”+groupnumber).hasClass(“选中”); 如
$isitchecked=$(“#组”+groupnumber)的if代码>返回始终为false,即使类已“选中”
var progressProcent=0;
var-groupnumber=1;
$(“#组”+groupnumber+”输入[type=“radio”]”。单击(函数(){
$whatgroup=“#组”+组号;
$isitchecked=$(“#组”+groupnumber).hasClass(“选中”);
如果($isitchecked){
}否则{
progressProcent=progressProcent+2.2727;
}
$(“#进度容器”).removeClass(“隐藏”);
$($whatgroup).addClass(“选中”);
$(“#进度条”).css('width',progressProcent+'%');
groupnumber=groupnumber+1;
});代码>
问题1
问题2
首先执行if语句
$isitchecked = $('#group' + groupnumber).hasClass("checked");
然后添加“checked”类
这就是为什么它总是返回false
另外,您不必使用增量逻辑,您可以使用它来查找单击的收音机。首先执行if语句
$isitchecked = $('#group' + groupnumber).hasClass("checked");
然后添加“checked”类
这就是为什么它总是返回false
此外,您不必使用增量逻辑,您可以使用它来查找单击的收音机。最简单的方法:-
progressProcent=0;
$(“输入[type='radio']”)。在('单击',函数()上){
if($(this).parent().find('.checked')。长度==0){
progressProcent=progressProcent+2.2727;
$(“#进度条”).css('width',progressProcent+'%');
}
$(this.addClass('checked');
});代码>
问题1
问题2
最简单的方法:-
progressProcent=0;
$(“输入[type='radio']”)。在('单击',函数()上){
if($(this).parent().find('.checked')。长度==0){
progressProcent=progressProcent+2.2727;
$(“#进度条”).css('width',progressProcent+'%');
}
$(this.addClass('checked');
});代码>
问题1
问题2
与
$('#group1 input[type="radio"]').click(function(){
groupnumber = groupnumber + 1;// doesn't do anything??
这只是将单击事件绑定到group1
即使您通过纠正上述问题来实现它,您也无法保证用户是否按照group1、group2、group3的顺序进行选择
即使您需要对父组的引用,也最好相对地获取它,而不是使用组号
$isitchecked = $('#group' + groupnumber).hasClass("checked");
可能是
$isitchecked = $(this).parent().hasClass("checked");
但同样,jQuery内置了选择器,无需再次实现,并且可能会导致边缘情况和错误
这里有一个不同的方法来解决这个问题
用于[id^=“group”]
$('[id^=“group”]输入[type=“radio”]”。单击(函数(){
选中的变量=$(“输入[type='radio']:选中”)。长度;
var total=$('fieldset[id^=“group”]')。长度;
风险百分比=已检查/总计*100;
$(“#进度条”).css('width',percent+'%');
});代码>
问题1
问题2
与
$('#group1 input[type="radio"]').click(function(){
groupnumber = groupnumber + 1;// doesn't do anything??
这只是将单击事件绑定到group1
即使您通过纠正上述问题来实现它,您也无法保证用户是否按照group1、group2、group3的顺序进行选择
即使您需要对父组的引用,也最好相对地获取它,而不是使用组号
$isitchecked = $('#group' + groupnumber).hasClass("checked");
可能是
$isitchecked = $(this).parent().hasClass("checked");
但同样,jQuery内置了选择器,无需再次实现,并且可能会导致边缘情况和错误
这里有一个不同的方法来解决这个问题
用于[id^=“group”]
$('[id^=“group”]输入[type=“radio”]”。单击(函数(){
选中的变量=$(“输入[type='radio']:选中”)。长度;
var total=$('fieldset[id^=“group”]')。长度;
风险百分比=已检查/总计*100;
$(“#进度条”).css('width',percent+'%');
});代码>
问题1
问题2
在点击事件结束时,您将groupnumber
增加一。它会在将来对不同的id进行单击检查,这就是为什么您总是得到false
基于我认为您想要实现的目标,您应该这样做(我尝试至少更改您的代码):
var progressProcent=0;
//选择字段集中的所有输入(因为所有输入
//具有测试字段(类)
$('.测试字段输入[type=“radio”]')。单击(函数(){
//获取最近的字段集
$whatgroup=$(this).closest('.testfield');
$isitchecked=$whatgroup.hasClass(“选中”);
如果($isitchecked){
}否则{
progressProcent=progressProcent+2.2727;
}
$(“#进度容器”).removeClass(“隐藏”);
$whatgroup.addClass(“选中”);
$(“#进度条”).css('width',progressProcent+'%');
});代码>
问题1