2010-05-12 2 views
0

У меня есть этот код на яваскрипт стороны: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 id="selectedAuthorities-4_1li" class="">

Любые предложения? Спасибо

ответ

1

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

document.getElementById('selectedAuthorities-4_1li').click(); 
+0

У меня есть onclick уже, проверьте html. Мне нужен пример для обновления моего JS, чтобы проверить onLOAD, если флажок установлен, и в этом случае do className = 'yes' – BoDiE2003

0

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

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

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

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

0

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

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

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