我对javascript很新,这似乎是一个非常简单的问题但是尽管有很多类似的帖子似乎都没有为我提供解决方案。
我在html页面的脚本中有以下代码:
$.get( "data.php", { getlocks: 1}, function( data ) { //Pull checkbox status from database (so it isn't lost on a page refresh)
wl = data.split(" ");
document.getElementById("lock369").checked = 1;
document.getElementById("lock399").checked = 0;
document.getElementById("lock935").checked = wl[2];
document.getElementById("test1").value = wl[0];
document.getElementById("test2").value = wl[1];
document.getElementById("test3").value = wl[2];
});
"lock369"
和"lock935"
设置为常量只是为了我的理智,以确保页面正确加载。问题是无论我如何设置"lock935"
,即使wl[2]
为零,它也会被检查出来。 (我有"test1"
- "test3"
文本框,显示wl
的3个元素,因此我确信他们通过{{1}从数据库中获取正确的值})。
最初我将所有三个复选框设置为data.php
各自的元素,并且所有这些复选框都出现同样的问题,所以只有wl
才有趣。我还尝试将"lock935"
的值分配给单个变量,并将wl
设置为等于这些变量,但这并没有解决问题。我也尝试将document.getElementById("lockXXX").checked
放在paranthesis,引号,单引号等中,没有任何区别。
正如我所提到的,我对js很新,所以如果这是我的一个简单的疏忽,那就对我大喊大叫,我将在未来纠正我的方式:)
谢谢!
答案 0 :(得分:0)
尝试这样的事情
document.getElementById("lock935").checked = wl[2]=="1"?true:false;
答案 1 :(得分:0)
使用0和1作为布尔值没有任何问题,只要确保它是以字符串形式来自您的数据库,您在其上调用 parseInt 或将其转换为编号的。
示例:
document.getElementById("lock935").checked = parseInt(wl[2], 10);
OR
document.getElementById("lock935").checked = Number(wl[2]);
如果是空字符串, parseInt 将返回NaN
,并使用Number()
将返回0
。 NaN
和0
都会导致未经检查的框,因此它真的取决于您。
编辑:解释了一些解释中的错误和代码中的拼写错误。