|
|
Модератор форума: JonMagon |
Сообщество uCoz Вебмастеру JavaScript, Flash и прочие технологии Проблема с document.getElementsByClassName() (document.getElementsByClassName() не распознается как переме) |
Проблема с document.getElementsByClassName() |
Как обратиться к дополнительному полю 1 как к переменной (числовой или текстовой)
![]() на странице /shop/checkout при попытке вывести переменную доп.поля 1 (обведено красным) - на экране возвращается объект типа Nodelist (знак >'0' игнорирует) <script type="text/javascript"> if (document.getElementsByClassName('order-item-other1')>'0') { var nal = document.getElementsByClassName('order-item-other1') alert(nal) } </script> ниже код таблицы (показанный на рисунке) Код<form id="order-form" method="POST" action="" onsubmit="if(_shopLockButtons()) return false; _shopFadeControl('order-table');_uPostForm('order-form'); return false;"> <input type="hidden" name="mode" value="recalc"> <input type="hidden" name="ssid" value="130072001406717603036"> <div id="order-table" style="position:relative;"> <table cellspacing="2" cellpadding="3" width="100%" border="0"> <thead> <tr class="order-head"> <th class="order-item-nom" width="1%">№</th> <th class="order-head-name">Наименование</th><th class="order-head-other1">Дополнительное поле 1</th> <th class="order-head-price" width="1%">Цена</th> <th class="order-head-cnt" width="1%" nowrap>Кол-во</th> <th class="order-head-sum" width="1%">Сумма</th> <th class="order-head-del" width="1%">Удалить</th> </tr> </thead> <tr id="order-item-1" class="order-item "><td class="order-item-nom">1.</td><td class="order-item-name" ><a href="/shop/6/desc/perchatki-burton-mix-master" target="_blank">Перчатки Burton Mix Master</a></td><td class="order-item-other1" >-1</td> <td class="order-item-price" nowrap>160руб.</td> <td class="order-item-cnt"><input type="text" name="cnt_1" maxlength="5" size="5" value="1"></td> <td class="order-item-sum" nowrap>160руб.</td> <td class="order-item-del" align="center"><input type="checkbox" name="del_1" value="1"></td> </tr> <tr> <td colspan="3"><input type="button" value="Продолжить покупки" onclick="location.href='/shop'" id="order-but-continue"></td> <td align="right"><input type="submit" value="Пересчитать" id="order-but-recalc"></td> <td align="right" class="order-total">Итого:</td> <td colspan="2" class="order-total">160руб.</td> </tr> </table> </div> </form> Прикрепления:
0737782.png
(18.1 Kb)
Сообщение отредактировал bulken - Вторник, 26 Ноя 2013, 11:19:01
|
|
Попробуйте так:
Код $(".order-item-other1").each( function () { if ($(this).text() > 0) { alert($(this).text()); } }); Дело в том, что document.getElementsByClassName('order-item-other1') в Вашем случае работать не будет, потому что возвращает массив, ведь классов может быть несколько. Оно и понятно, ведь, товаров может быть несколько в таблице. Чтобы по массиву пробежаться используется each(), $(this) получает ячейку как элемент массива, но мы не можем его сравнивать с числом, а чтобы получить текст ячейки используется text(). И только теперь сравнивать можно. |
Спасибо большое вам обоим!! помогло! Нетрезв, отдельно респект тебе!!!
Но вот только последний вопрос... а если order-item-other1 будет равен тексту "есть в наличии" а не "-1" то вместо if ($(this).text() > 0) что писать? Добавлено (26 Ноя 2013, 12:06:31) |
|
$(".order-item-other1").each( function () { if ($(this).text() > 0) { alert($(this).text()); } };); Как мне можно удалить или поменять значения в массиве из двух элементов? (на рисунке выделено красным): ![]() я к нему обращаюсь так: Код $(".order-total").each( function () { alert($(this).text()); };); В итоге выводит последовательно два сообщения: "Итого:" и "500 руб" Прикрепления:
1649804.png
(13.5 Kb)
|
bulken, попробуйте понять суть: each() проходится по всем DOM элементам с классами .order-total и выполняет для КАЖДОГО alert($(this).text());
Или просто ответьте на вопрос "а чо надо-та?" ![]() |
bulken, попробуйте понять суть: each() проходится по всем DOM элементам с классами .order-total и выполняет для КАЖДОГО alert($(this).text()); В данном случае мне нужно просто убрать эту строку: "Итого: 500 руб". То есть обратиться последовательно к двум этим элементам с классами .order-total (лучше без цикла, потому что в domе всего 2 элемента). Как обращаться к конкретному dom-элементу, например к "Итого:" - не знаю) В другом месте тоже нужно обратиться к dom элементу но уже с классом "myWinTD1": //forum.ucoz.ru/forum/43-59430-1#1118502 но только там нужно не удалить а поменять надпись. Вся проблема в том, что dom элементы находятся в закрытом шаблонном коде ucoz..и поэтому приходится приделывать эти костыли с изменением dom элемента после его создания. Надеюсь смог изъяснится ![]() |
| |||
| |||
Будьте в курсе всех обновлений: подпишитесь на наш официальный Telegram-канал uCoz и задавайте вопросы в чате сообщества!