JavaScript в разных браузерах

При разработке «Кафедры» я с самого начала не уделял достаточно внимания кроссбраузерности — понадеялся на bootstrap. И, как оказалось, он меня и не подвёл — внешне всё действительно выглядит идентично в разных браузерах. А вот JavaScript «подвёл». Уже за пару дней до появления новой версии обнаружил, что она не работает в FireFox (в остальных браузерах — нормально).

В первую очередь я подумал, что у меня в FireFox (которым я пользуюсь редко) вообще отключён JavaScript. Но оказалось, что нет. Я был уверен, что это мистика — ведь код до ужаса простой:

<script type="text/javascript">
function includerazdel(){
 
var uprazhneniya = document.forms['garmonika'];
//на странице есть главная форма с именем garmonika
 
document.all.summa.value='';
// а где-то в другой форме было поле с именем summa
 
var summatext = document.all.summa;
// как я понимаю, "all" - это во всех формах, найденных на странице
 
for (var i = 0; i < uprazhneniya.elements.length; i = i + 1) {
	if (uprazhneniya.elements[i].checked) {
		summatext.value = summatext.value+uprazhneniya.elements[i].alt + '|';
	};
};
}
</script>

Так как я, откровенно говоря, в программировании на JavaScript не особо опытен, даже не знал, как правильно сформулировать вопрос, чтобы найти ответ в поисковике. В итоге нашёл решение совершенно случайно (когда искал способ реализации кардинально иного способа). При этом пришлось поправить всего две (!) строчки в коде и добавить новое имя одной из форм:

<script type="text/javascript">
function includerazdel(){
var
	uprazhneniya = document.forms['garmonika'];
 
	document.forms['sendformular'].summa.value = '';
	// здесь уже явно указано, в какой форме находится summa
 
var
	summatext = document.forms['sendformular'].summa;
 
for (var i = 0; i < uprazhneniya.elements.length; i = i + 1) {
	if (uprazhneniya.elements[i].checked) {
		summatext.value = summatext.value+uprazhneniya.elements[i].alt + '|' ;
	};
};
}
</script>

Однако идея кардинально переписать этот код не ушла. Возможно, что из спортивного интереса я её всё-таки реализую. (об этом в следующей записи).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*