Выбор чекбокса по клику на id=“stroka”

268
04 мая 2017, 14:25

document.getElementById('stroka').onclick = raz; 
function raz() { 
  if($("#ch1").attr("checked") == 'checked') {   
    $('#ch1').removeAttr("checked"); 
  } else { 
    $('#ch1').attr("checked","checked"); 
  }; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="divTableRow" id="stroka" onclick="raz()"> 
  <div class="divTableCell"> 
    <label> 
      <input type="checkbox" class="checkbox2" id="ch1"> 
      <span class="checkbox-custom2"></span> 
    </label> 
  </div> 
  <div class="divTableCell">27.04.2017</div> 
  <div class="divTableCell">28.04.2017</div> 
  <div class="divTableCell">118725-31521</div> 
  <div class="divTableCell">MOBIS/HYUNDAI/KIA</div> 
  <div class="divTableCell">ZA44BWD02ACA9601E</div> 
  <div class="divTableCell">ПЛЕНКА ЗАЩИТНАЯ БОКОВОЙ НАКЛАДНАЯ</div> 
  <div class="divTableCell">9 999</div> 
  <div class="divTableCell">1 256 878, 00</div> 
</div>

Данный скрипт работает только 1 раз: если чекбокса нет, то по клику на строке id="stroka" он проставляется; если уже есть - снимается. Но второй раз уже не работает и чекбокс не выбирается совсем.

Что я делаю не так? Подскажите пожалуйста.

Answer 1

@АлексейШиманский прав дважды.

Во-первых, я убрал onclick="raz()" из <div class="divTableRow" id="stroka" onclick="raz()">.

Во-вторых, зачем добавлять аттрибуты самому, проверять их и тд., когда можно просто спросить .checked? И он тебе ответит, checked он или нет. И сюда же можно его засетать.

Итого:

document.getElementById('stroka').onclick = raz; 
 
function raz() { 
    let checkBox = document.getElementById("ch1"); 
    checkBox.checked = !checkBox.checked; 
}
<div class="divTableRow" id="stroka"> 
  <div class="divTableCell"> 
    <label> 
      <input type="checkbox" class="checkbox2" id="ch1"> 
      <span class="checkbox-custom2"></span> 
    </label> 
  </div> 
  <div class="divTableCell">27.04.2017</div> 
  <div class="divTableCell">28.04.2017</div> 
  <div class="divTableCell">118725-31521</div> 
  <div class="divTableCell">MOBIS/HYUNDAI/KIA</div> 
  <div class="divTableCell">ZA44BWD02ACA9601E</div> 
  <div class="divTableCell">ПЛЕНКА ЗАЩИТНАЯ БОКОВОЙ НАКЛАДНАЯ</div> 
  <div class="divTableCell">9 999</div> 
  <div class="divTableCell">1 256 878, 00</div> 
</div>

READ ALSO
Предпросмотр изображения до загрузки

Предпросмотр изображения до загрузки

Как сделать предпросмоотр изображения, что бы он выводился в конкретном div до загрузки на сервер? Пробовал такой вариант- не работает

420
javascript, jquery. Не включается функция при собитии

javascript, jquery. Не включается функция при собитии

ЗдравствуйтеНе могу понять, почему если я создал функцию выше и потом просто задаю её имя в обработчик событий, то она не работает

229
Hover на изображениях jquery

Hover на изображениях jquery

После наведения мыши на одно изображение ховер эффект воспроизводиться и на всех остальныхКак сделать, чтобы ховер (белый блок с текстом...

300