Javascript: изменить класс li, если установлен флажок (при загрузке) - PullRequest
0 голосов
/ 12 мая 2010

У меня есть этот код на стороне JavaScript:

function changeSelectionStyle(id) {
    if(document.getElementById(id).className != 'yes'){
    document.getElementById(id).className = 'yes';
    }
    else{document.getElementById(id).className = '';}
}

И это на html:

    <ul>
      <li id="selectedAuthorities-4_1li" class="">
        <input type="checkbox" id="selectedAuthorities-4_1" name="selectedAuthorities" value="ROLE_ADD_COMMENT_TO_CV" checked="checked" onload="changeSelectionStyle(this.id + 'li');" onclick="changeSelectionStyle(this.id + 'li'); checkFatherSelection(this.id);">

        <a href="#" onclick="document.getElementById('selectedAuthorities-4_1').click(); return false;">  Agregar comentario <samp><b></b>Permite agregar comentario en el detalle.</samp>
        </a>
     </li> 
  </ul>

Хорошо, что я не могу получить работу, когда установлен флажок, при загрузке JS должен проверить его и назначить class="yes" для li, здесь: <li id="selectedAuthorities-4_1li" class="">

Есть предложения? Спасибо

Ответы [ 3 ]

1 голос
/ 12 мая 2010

Похоже, вы используете неправильный идентификатор для ссылки на LI в обработчике onclick привязки, попробуйте:

document.getElementById('selectedAuthorities-4_1li').click();
0 голосов
/ 12 мая 2010

Вы используете onload для элемента ввода, который не является допустимым событием для этого типа элемента. Вам нужно будет использовать onload для элемента body:

<body onload="changeSelectionStyle('selectedAuthorities-4_1li');">

Очевидно, что в вашем реальном приложении вам придется зацикливаться на всех ваших LI. Использование jQuery для этого значительно упростит

0 голосов
/ 12 мая 2010

Есть два способа справиться с этой очень распространенной ситуацией:

  1. Инициализируйте класс с помощью серверной логики в соответствии с данными на стороне сервера, которые определяют настройку флажка. Иногда это легко, иногда нет.

  2. Вставьте небольшой блок <script>, который запускает операцию "щелчка". Это своего рода боль, потому что вы хотите вызвать щелчок без переключения флажка; как именно вы это сделаете, зависит от того, как вообще настроены ваши события, но в вашем случае вам просто нужно вызвать функцию.

Ваша функция "changeSelectionStyle" действительно должна принимать решение о том, каким должно быть имя класса, сначала проверяя флажок напрямую, по моему мнению. Возможно, установка флажка «флажок» может быть отдельным параметром для функции.

...