我正在尝试仅获取选中的复选框值
所以我使用了for
语句。
如果我从头开始检查的话
但是如果我从第二秒开始检查,它将空值放入数组中。
即使我设置了此条件,它仍然会保留空值。
如果(document.getElementsByName(“ check”)[i] .checked == true)
什么问题?
js
var arr_downloadName = new Array();
var chekced_download = 0;
$(".compress").click(function () {
var size = document.getElementsByName("check").length;
for (var i = 0; i < size; i++) {
if (document.getElementsByName("check")[i].checked == true) {
arr_downloadName[i] = document.getElementsByName("check")[i].value;
chekced_download++
}
}
});
html
<tr>
<td id="10Mb.dat"><input type="checkbox" name='check' value='10Mb.dat'
data-url="https://eoimages.gsfc.nasa.gov/images/imagerecords/73000/73751/world.topo.bathy.200407.3x21600x10800.jpg"/>File10MB
</td>
</tr>
<tr>
<td id="100mb.bin"><input type="checkbox" name='check' value='100mb.bin'
data-url="http://speedtest-ny.turnkeyinternet.net/100mb.bin"/>File100MB
</td>
</tr>
<tr>
<td id="500MB.test"><input type="checkbox" name='check' value='500MB.test'
data-url="http://nl.altushost.com/500MB.test"/>File500MB</td>
</tr>
<tr>
<td id="1000mb.bin"><input type="checkbox" name='check' value='1000mb.bin'
data-url="http://speedtest.tele2.net/1GB.zip"/>File1GB</td>
</tr>
<button class="btn btn-primary compress">압축하기</button>
答案 0 :(得分:2)
之所以发生这种情况,是因为您没有在索引0
(或以前的索引)中指定元素。因此,如果您尝试将元素添加到索引为1
的空数组中(这在您选中第二个复选框时发生),则您需要在索引{处将一个empty
值放入一个数组中{1}},以便它可以将元素添加到索引0
。
对此的一种解决方案是使用1
,它将项附加到.push
数组的末尾:
arr_downloadName
let chekced_download = 0;
$(".compress").click(function() {
let arr_downloadName = [];
var checkElem = document.getElementsByName("check");
var size = checkElem.length;
for (var i = 0; i < size; i++) {
if (checkElem[i].checked == true) {
arr_downloadName.push(checkElem[i].value);
chekced_download++
}
}
console.log(arr_downloadName);
});
作为旁注,虽然不需要它,但我建议您添加一个变量<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<tr>
<td id="10Mb.dat"><input type="checkbox" name='check' value='10Mb.dat' data-url="https://eoimages.gsfc.nasa.gov/images/imagerecords/73000/73751/world.topo.bathy.200407.3x21600x10800.jpg" />File10MB
</td>
</tr>
<tr>
<td id="100mb.bin"><input type="checkbox" name='check' value='100mb.bin' data-url="http://speedtest-ny.turnkeyinternet.net/100mb.bin" />File100MB
</td>
</tr>
<tr>
<td id="500MB.test"><input type="checkbox" name='check' value='500MB.test' data-url="http://nl.altushost.com/500MB.test" />File500MB</td>
</tr>
<tr>
<td id="1000mb.bin"><input type="checkbox" name='check' value='1000mb.bin' data-url="http://speedtest.tele2.net/1GB.zip" />File1GB</td>
</tr>
<button class="btn btn-primary compress">압축하기</button>
来保存元素集合。然后,不必每次都重新查询DOM,而只需引用元素列表即可,从而提高整体性能。
此外,我注意到您没有充分利用jQuery。相反,您可以使用所有不同的选择器来获取所有名称为checkElem
的元素:
check
,然后$("[name='check']:checked")
将所有选定的元素设为其值:
.map
$(".compress").click(function() {
let arr_downloadName = $("[name='check']:checked").toArray().map(function(e) {
return e.value;
})
console.log(arr_downloadName);
});
答案 1 :(得分:2)
尝试
if (document.getElementsByName("check")[i].checked != null)
答案 2 :(得分:2)
似乎您的代码可以使用。您使用不正确的变量将值放入数组。进行较小的更正。即使用'chekced_download'代替下面的i,将值推入数组
create trigger trigger_name
instead of update as
if update(column1)
begin
insert into TabChangeLog
select inserted.column1, inserted.column3, deleted.column3, 'column3', 'update/change'
from inserted i inner join deleted d
on i.column1 = d.column2
end
if update(column2)
begin
insert into TabChangeLog
select inserted.column1, inserted.column2, deleted.column2, 'column2', 'update/change'
from inserted i inner join deleted d
on i.column1 = d.column2
end
...
答案 3 :(得分:1)
已检查是非常隐秘的HTML属性
如果被选中的地方看起来像
<input checked />
<input checked="checked" />
并产生true
结果
如果未选中的话,
<input />
会产生NULL-因为没有选中的属性。因此,请检查已检查的支票。 McCheck检查!
.checked != null
因此您获得了空值。