Почему скрипт работает в FF но неработает ни в Chrome, ни в Opera, ни в IE

html JavaScript веб дизайн ООП програмирование

<select name="p_product" class="p_product">
<optgroup label="1200*800 EUR" id="opt3">
<option name="p01" class="itemold" selected>P01 Европоддон Высший сорт</option>
<option name="p02" class="itemold">P02 Европоддон Первый сорт</option>
<option name="p03" class="itemold">P03 Европоддон Второй сорт</option>
</optgroup>
<optgroup label="1200*800">
<option name="p10" class="itemnew" selected>P10 Европоддон (без клейма) Новый</option>
<option name="p12" class="itemold">P12 Европоддон (без клейма) Первый сорт</option>
<option name="p13" class="itemold">P13 Европоддон (без клейма) Второй сорт</option>
</optgroup>
<optgroup label="1200*1000">
<option name="p20" class="itemnew" selected>P20 1200*1000 Новый</option>
<option name="p22" class="itemold">P22 1200*1000 Первый сорт</option>
<option name="p23" class="itemold">P23 1200*1000 Второй сорт</option>
</optgroup>
</select>
- форма.
А вот скрипт
document.getElementsByClassName = function(cl) {
var retnode = [];
var myclass = new RegExp('\\b'+cl+'\\b');
var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++) {
var classes = elem[i].className;
if (myclass.test(classes)) retnode.push(elem[i]);
}
return retnode;
};

var form = document.buy_app;
var p_new = document.getElementById('p_new');
var p_old = document.getElementById('p_old');

var itemnew = document.getElementsByClassName('itemnew');
var itemold = document.getElementsByClassName('itemold');

var order_unit = document.getElementsByClassName('order_unit');
alert(itemnew.length);
alert(itemold.length);
function pnew() {
if (p_new.checked)
{
for(i=0; i<itemnew.length; i++)
{
itemnew[i].style.display = 'block';
}
}
else
{
for(i=0; i<itemnew.length; i++)
{
itemnew[i].style.display = 'none';
}
}
}
function pold() {
if (p_old.checked)
{
for(i=0; i<itemold.length; i++)
{
itemold[i].style.display = 'block';
}
}
else
{
for(i=0; i<itemold.length; i++)
{
itemold[i].style.display = 'none';
}
}
}


function allload() {
pnew();
pold();
}

window.onload = allload;


Примечание:
Потому что это только фрагмент скрипта... Который отвечает именно за показ, и скрытие элементов. Вот я и не поставил тегов скрипта.
Ответы:
Эм.. может я и придирчив, но не вижу тегов скрипта.O_o
нужно часть скрипта сделать функцией
var p_new;var p_old;var itemnew;var itemold;var order_unit
function init(){
var form = document.buy_app;  
  p_new = document.getElementById('p_new');
  p_old = document.getElementById('p_old');

  itemnew = document.getElementsByClassName('itemnew');
  itemold = document.getElementsByClassName('itemold');
 
     order_unit = document.getElementsByClassName('order_unit');
 alert(itemnew.length);
 alert(itemold.length);
}
а затем запускать
function allload() {  
 init();
 pnew();
 pold();
 }
используйте JQuery и будет вам счастье и совместимость со всеми браузерами)))


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.