Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js/jquery的语法是否正确?_Javascript_Jquery_Syntax - Fatal编程技术网

Javascript js/jquery的语法是否正确?

Javascript js/jquery的语法是否正确?,javascript,jquery,syntax,Javascript,Jquery,Syntax,我尝试了这么多不同的组合,它们似乎都不能正确工作,我知道这一定是我的语法 基本上,我有一排复选框。10月至3月。如果只选中一个复选框,并且其中一个复选框为10月或3月,则触发 这是我的密码。(我已经能够正确抓取noofmonths了。) 我遇到的问题是,它似乎不在乎我检查了几个月。无论哪个月,我总是加200。。。。不过noofmonths确实可以正常工作,因为如果我选中了多个复选框,这不会触发 我错过了什么?我感谢你的帮助 您必须测试匹配查询的长度 if (noofmonths == "1" &

我尝试了这么多不同的组合,它们似乎都不能正确工作,我知道这一定是我的语法

基本上,我有一排复选框。10月至3月。如果只选中一个复选框,并且其中一个复选框为10月或3月,则触发

这是我的密码。(我已经能够正确抓取noofmonths了。)

我遇到的问题是,它似乎不在乎我检查了几个月。无论哪个月,我总是加200。。。。不过noofmonths确实可以正常工作,因为如果我选中了多个复选框,这不会触发


我错过了什么?我感谢你的帮助

您必须测试匹配查询的长度

if (noofmonths == "1" && ( $('#month_oct:checked').length || $('#month_mar:checked').length )) {

您必须测试匹配查询的长度

if (noofmonths == "1" && ( $('#month_oct:checked').length || $('#month_mar:checked').length )) {

您可以使用
length
属性:

var len = $('#month_oct:checked, #month_mar:checked').length;
if (noofmonths == "1" && len > 0) {
    tempbase = tempbase + 200;
}

您可以使用
length
属性:

var len = $('#month_oct:checked, #month_mar:checked').length;
if (noofmonths == "1" && len > 0) {
    tempbase = tempbase + 200;
}

问题是
$('someselector')
始终返回jQuery对象,即使没有与
'someselector'匹配的元素。任何物体,即使是空的,都是“真实的”

您应该做的是:

if (noofmonths == "1" && ( $('#month_oct:checked').length > 0
                        || $('#month_mar:checked').length > 0 )) {

// OR

if (noofmonths == "1" && ( $('#month_oct').is(':checked')
                        || $('#month_mar').is(':checked')) {
当没有匹配的元素时,生成的jQuery对象的
长度将
0
。另一方面,
.is()
方法返回布尔值

说到这个,我会考虑另一种方法。我会给整行复选框一个公共类(除非它们已经共享了
名称
属性?),然后给特殊的复选框(Oct&Mar)一个额外的类:

<input type="checkbox" class="month" value="Jan">
...
<input type="checkbox" class="month oneonly" value="Mar">
...

也就是说,首先将所有复选框检索到
$checked
变量中,然后如果数字是1,并且该数字的类将其标记为三月或十月。。。这样,如果在未来的七月突然变得“特别”,您只需在html中向七月添加“oneonly”类(或您想命名的任何名称),您根本不需要更改JavaScript。

问题在于
$('someselector'))
始终返回jQuery对象,即使没有匹配的元素
“someselector”
。任何物体,即使是空的,都是“真实的”

您应该做的是:

if (noofmonths == "1" && ( $('#month_oct:checked').length > 0
                        || $('#month_mar:checked').length > 0 )) {

// OR

if (noofmonths == "1" && ( $('#month_oct').is(':checked')
                        || $('#month_mar').is(':checked')) {
当没有匹配的元素时,生成的jQuery对象的
长度将
0
。另一方面,
.is()
方法返回布尔值

说到这个,我会考虑另一种方法。我会给整行复选框一个公共类(除非它们已经共享了
名称
属性?),然后给特殊的复选框(Oct&Mar)一个额外的类:

<input type="checkbox" class="month" value="Jan">
...
<input type="checkbox" class="month oneonly" value="Mar">
...

也就是说,首先将所有复选框检索到
$checked
变量中,然后如果数字是1,并且该数字的类将其标记为三月或十月。。。这样,如果在未来的七月突然变得“特别”,您只需在html中向七月添加“oneonly”类(或您想命名的任何名称),您根本不需要更改JavaScript。

您只是选择复选框,而不是检查它们是否真的被选中

if (noofmonths == "1" && ( $('#month_oct')[0].checked || $('#month_mar')[0].checked )) {
    tempbase = tempbase + 200;
}

$('month#u oct')。是(':checked')
还将返回一个布尔值,或者您可以实际选择复选框,并检查选择器是否有长度,就像在其他答案中一样。

您只是选择复选框,而不是检查它们是否实际被选中

if (noofmonths == "1" && ( $('#month_oct')[0].checked || $('#month_mar')[0].checked )) {
    tempbase = tempbase + 200;
}

$('month#u oct')。是(':checked')
还将返回一个布尔值,或者您可以实际选择复选框,并检查选择器是否有长度,如其他答案所示。

再次感谢!我继续为更干净的代码添加了类。:)非常感谢!不客气。(请注意,只有在没有一种简单的方法可以在一个步骤中选择所有输入的情况下,“month”类才是必需的,但显然,无论哪种方法都需要“oneonly”来标识“特殊”月份。)再次感谢!我继续为更干净的代码添加了类。:)非常感谢!不客气。(请注意,“month”类只有在没有一种简单的方法可以在一个步骤中选择所有输入的情况下才是必需的,但显然,无论哪种方法都需要“oneonly”来标识“特殊”月份。)