【问题标题】:How to add value from input for checked checkboxes to list?如何将选中复选框的输入值添加到列表中?
【发布时间】:2018-06-05 16:00:36
【问题描述】:

我在将选中复选框的输入值添加到列表时遇到问题。我不知道如何为合适的 ul 创建新元素。

document.addEventListener("DOMContentLoaded", function() {

  var checkboxDays = document.querySelectorAll('.checkboxDay');
  var allDays = document.querySelector('.allDays');
  var noteText = document.querySelector('.note-text')
  var form = document.querySelector('form');
  var btn = document.querySelector('.button');
  var dayBoxes = document.querySelectorAll('.dayBox ul');

  btn.addEventListener('click', function() {
    var dataItem = noteText.value;
    var li = document.createElement('li');
    li.innerText = dataItem;

    for (var i = 0; i < checkboxDays.length; i++) {
      if (checkboxDays[i].checked) {
        dayBoxes[i].appendChild(li);
      }
    }
  });
});
<form class="input-form">
  <div class='note-cnt'>
    <input type="text" class="note-text" placeholder="Add your note"></input>
  </div>
  <div class="checkbox-cnt">
    <h2>Check Day/s</h2>
    <label>Monday</label><input type="checkbox" class="checkboxDay" />
    <label>Tuesday</label><input type="checkbox" class="checkboxDay" />
    <label>Wednesday</label><input type="checkbox" class="checkboxDay" />
    <label>Thursday</label><input type="checkbox" class="checkboxDay" />
    <label>Friday</label><input type="checkbox" class="checkboxDay" />
    <label>Saturday</label><input type="checkbox" class="checkboxDay" />
    <label>Sunday</label><input type="checkbox" class="checkboxDay" />
    <label>AllDays</label><input type="checkbox" class="allDays" />

  </div>
  <button class="button" type="button">
                <span>Add item</span>
            </button>


</form>
</section>
<div class="allBox">
  <div class="dayBox">
    <h3>Monday</h3>
    <ul class="monday"></ul>
  </div>
  <div class="dayBox">
    <h3>Tuesday</h3>
    <ul class="tuesday"></ul>
  </div>
  <div class="dayBox">
    <h3>Wednesday</h3>
    <ul class="wednesday"></ul>
  </div>
  <div class="dayBox">
    <h3>Thursday</h3>
    <ul class="thursday"></ul>
  </div>
  <div class="dayBox">
    <h3>Friday</h3>
    <ul class="friday"></ul>
  </div>
  <div class="dayBox">
    <h3>Saturday</h3>
    <ul class="saturday"></ul>
  </div>
  <div class="dayBox">
    <h3>Sunday</h3>
    <ul class="sunday"></ul>
  </div>
</div>

【问题讨论】:

  • 您输入的字段需要具有“名称”属性或ID。这将使您能够提取值。

标签: javascript arrays validation


【解决方案1】:

出现此错误是因为您只创建了一个 &lt;li&gt; 元素,并且实际上将该元素移动到了 &lt;ul&gt; 元素之间的循环内。您必须为循环内的每个单独的 &lt;ul&gt; 元素创建 &lt;li&gt; 元素并附加它。

示例:

document.addEventListener( 'DOMContentLoaded', function () {
    var checkboxDays = document.querySelectorAll( '.checkboxDay' ),
        allDays = document.querySelector( '.allDays' ),
        noteText = document.querySelector( '.note-text' ),
        form = document.querySelector( 'form' ),
        btn = document.querySelector( '.button' ),
        dayBoxes = document.querySelectorAll( '.dayBox ul' );

    btn.addEventListener( 'click', function () {
        var dataItem = noteText.value;

        for ( var i = 0; i < checkboxDays.length; i++ ) {
            if ( checkboxDays[ i ].checked ) {
                var li = document.createElement( 'li' );

                li.innerText = dataItem;
                dayBoxes[ i ].appendChild( li );
            }
        }
    } )

    allDays.addEventListener( 'click', function () {
        for ( var i = 0; i < checkboxDays.length; i++ ) {
            checkboxDays[ i ].checked = allDays.checked ? true : false
        }
    } )
} )
h3, ul {
  margin: 0
}
<form class="input-form">
    <h2>Check Day/s:</h2>
    <div class='note-cnt'>
        <input type="text" class="note-text" placeholder="Add your note">
    <button class="button" type="button">Add item</button>
    </div>
    <div class="checkbox-cnt">
        <label>Monday</label><input type="checkbox" class="checkboxDay" />
        <label>Tuesday</label><input type="checkbox" class="checkboxDay" />
        <label>Wednesday</label><input type="checkbox" class="checkboxDay" />
        <label>Thursday</label><input type="checkbox" class="checkboxDay" />
        <label>Friday</label><input type="checkbox" class="checkboxDay" />
        <label>Saturday</label><input type="checkbox" class="checkboxDay" />
        <label>Sunday</label><input type="checkbox" class="checkboxDay" />
        <label>AllDays</label><input type="checkbox" class="allDays" />
    </div>
</form>
<br>
<div class="allBox">
    <div class="dayBox">
        <h3>Monday</h3>
        <ul class="monday"></ul>
    </div>
    <div class="dayBox">
        <h3>Tuesday</h3>
        <ul class="tuesday"></ul>
    </div>
    <div class="dayBox">
        <h3>Wednesday</h3>
        <ul class="wednesday"></ul>
    </div>
    <div class="dayBox">
        <h3>Thursday</h3>
        <ul class="thursday"></ul>
    </div>
    <div class="dayBox">
        <h3>Friday</h3>
        <ul class="friday"></ul>
    </div>
    <div class="dayBox">
        <h3>Saturday</h3>
        <ul class="saturday"></ul>
    </div>
    <div class="dayBox">
        <h3>Sunday</h3>
        <ul class="sunday"></ul>
    </div>
</div>

【讨论】:

    猜你喜欢
    • 2014-03-03
    • 2023-03-28
    • 2015-11-10
    • 2011-08-28
    • 2014-03-19
    • 2014-05-16
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多