for语句将第一个空值保持不变

时间:2019-02-26 08:13:29

标签: javascript

我正在尝试仅获取选中的复选框值 所以我使用了for语句。

如果我从头开始检查的话

但是如果我从第二秒开始检查,它将空值放入数组中。

即使我设置了此条件,它仍然会保留空值。

  

如果(document.getElementsByName(“ check”)[i] .checked == true)

什么问题?

enter image description here

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>

4 个答案:

答案 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

因此您获得了空值。