我需要在页面上保存值以及复选框的状态;所以我可以在提交时检查是否已取消选中复选框并使用comparestatus()函数将其值用于进一步的逻辑。我试过这个,但我得到的错误是没有定义变量periodCHK。
<input type="checkbox" name="Periods" value="25301601" >
<input type="checkbox" name="Periods" value="25301602" checked>
<script type="text/javascript">
$j(document).ready( function() {
var periodCHK;
$j(":checkbox").each( function() {
periodCHK["$j(this.id).val()"]=($j(this).is(':checked'));
} );
console.log(periodCHK);
function comparestatus() {
var periodstring;
if (!$j(this).is(':checked')) {
// if this one was checked before, grab it and make a string
if (window.periodCHK["$j(this.id).val()"])
{
periodstring+=["$j(this.id).val()"] + ",";
}
}
}
} );
</script>
答案 0 :(得分:1)
您在函数中声明var name = (function(name) {
return name
})(function() {
return 'Jane';
}());
console.log(name); // => Jane
,因此它不会成为var periodCHK
的属性。您在window
内使用window.periodCHK
进行调用的地方,应该只是comparestatus
。这应该有效,因为函数periodCHK
是在声明comparestatus
的同一函数中声明的。它们属于同一范围。
答案 1 :(得分:1)
您的periodCHK
变量是(正确地)使用document.ready模块中的var声明的,因此它只存在于该函数范围内。您只需通过以下方式访问它:
if (periodCHK["$j(this.id).val()"])
(注意:为了让您的变量可以在全局范围内访问(window
),您必须在没有var
的情况下声明它,或者明确地将其分配给窗口。但是,这通常是不好的做法。)