Как снять флажок в чистом JavaScript?

Вот код HTML:

<div class="text">
   <input value="true" type="checkbox" checked="" name="copyNewAddrToBilling"><label>

Я хочу изменить значение на false. Или просто снимите флажок. Я хотел бы сделать это в чистом JavaScript, без использования внешних библиотек (без jQuery и т.д.),

Ответ 1

<html>
    <body>
        <input id="check1" type="checkbox" checked="" name="copyNewAddrToBilling">
    </body>
    <script language="javascript">
        document.getElementById("check1").checked = true;
        document.getElementById("check1").checked = false;
    </script>
</html>

Я добавил атрибут языка к элементу сценария, но он не нужен, потому что все браузеры используют это по умолчанию, но не оставляет сомнений в том, что показывает этот пример.

Если вы хотите использовать javascript для доступа к элементам, он имеет очень ограниченный набор функций GetElement *. Таким образом, вам нужно будет привыкнуть давать каждому элементу атрибут UNIQUE id.

Ответ 2

Рекомендуется без jQuery:

Дайте свой <input> идентификатор и обратитесь к нему. Кроме того, удалите checked="" <input> если вы хотите, чтобы этот флажок начинался без уведомления. Тогда это:

document.getElementById("my-checkbox").checked = true;

Чистый JavaScript, без идентификатора элемента (# 1):

var inputs = document.getElementsByTagName('input');

for(var i = 0; i<inputs.length; i++){

  if(typeof inputs[i].getAttribute === 'function' && inputs[i].getAttribute('name') === 'copyNewAddrToBilling'){

    inputs[i].checked = true;

    break;

  }
}

Чистый Javascript, без идентификатора элемента (# 2):

document.querySelectorAll('.text input[name="copyNewAddrToBilling"]')[0].checked = true;

document.querySelector('.text input[name="copyNewAddrToBilling"]').checked = true;

Обратите внимание, что querySelectorAll и querySelector методы поддерживаются в этих браузеров: IE8+, хром 4+, Safari 3. 1+, Firefox 3. 5+ и все мобильные браузеры.

Если элемент может отсутствовать, вы должны проверить его существование, например:

var input = document.querySelector('.text input[name="copyNewAddrToBilling"]');
if (!input) { return; }

С помощью jQuery:

$('.text input[name="copyNewAddrToBilling"]').prop('checked', true);

Ответ 3

Есть еще один способ сделать это:

//elem - get the checkbox element and then
elem.setAttribute('checked', 'checked'); //check
elem.removeAttribute('checked'); //uncheck

Ответ 4

Вам нужно будет присвоить идентификатор флажку:

<input id="checkboxId" type="checkbox" checked="" name="copyNewAddrToBilling">

а затем в JavaScript:

document.getElementById("checkboxId").checked = false;