Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2016, 16:17   #1
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию Вложенный getElementById

Такая проблема, есть код:
Код HTML:
<div class="tab-pane active" id="webmoney-id-1">
                                            <div class="container">
                                            <form action="https://merchant.webmoney.ru/lmi/payment.asp" method="POST">
                                                <input type="hidden" id="product-price" value="400">
                                                <input type="hidden" name="LMI_PAYMENT_NO" id="LMI_PAYMENT_NO" value="">
                                                <input type="hidden" name="LMI_PAYEE_PURSE" id="LMI_PAYEE_PURSE" value="">
                                                <input type="hidden" name="LMI_PAYMENT_AMOUNT" id="LMI_PAYMENT_AMOUNT" value="">
                                                <input type="hidden" name="LMI_PAYMENT_DESC" id="LMI_PAYMENT_DESC" value="">
                                                <br>Тип оплаты:<br>
                                                <select class="form-control" style="width: 30%">
                                                    <option selected onclick="changePurse(this, 1)" value="<?=$wmr?>">WebMoney WMR (рубли)</option>
                                                    <option onclick="changePurse(this, 1)" value="<?=$wmz?>">WebMoney WMZ (доллары)</option>
                                                    <option onclick="changePurse(this, 1)" value="<?=$wmu?>">WebMoney WMU (гривны)</option>
                                                </select>
                                                <br><span class="text-muted">Вы будете перенаправлены на сайт WebMoney, чтобы завершить оплату.</span>
                                                <br><br><input type="submit" class="btn btn-warning" value="Оплатить">
                                            </form>
                                            </div>
                                        </div>
В каждом таком отрезке есть input с id=product-price (фиксированный id), и div с id=webmoney-id-n

Как изменить product-price относящийся к определенному div?

Делал так, не работает

Код:
document.getElementById('webmoney-id-1').getElementById('product-price').value = '300';
PaHaNjkee вне форума Ответить с цитированием
Старый 12.01.2016, 16:30   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не работает
Что показывает отладчик?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.01.2016, 16:31   #3
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что показывает отладчик?
TypeError: document.getElementById(...).getEle mentById is not a function
product.php:89:25
Пустая строка не может быть аргументом метода getElementById().
PaHaNjkee вне форума Ответить с цитированием
Старый 12.01.2016, 16:33   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Причем тут вложенность? ID уникальным на весь документ должен быть.

Так что так нельзя делать, ищите по другим признакам. class, name, tag, data-my-property, ...

getElementsByName, getElementsByClassName, getElemenetsByTagName, ...
querySelector https://developer.mozilla.org/en-US/.../querySelector
.parent
.children

Но с поиском во вложенных вроде не очень просто в чистом JS, так что советую например jQuery взять.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.01.2016, 16:37   #5
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Причем тут вложенность? ID уникальным на весь документ должен быть.

Так что так нельзя делать, ищите по другим признакам. class, name, tag, data-my-property, ...

getElementsByName, getElementsByClassName, getElemenetsByTagName, ...
querySelector https://developer.mozilla.org/en-US/.../querySelector
.parent
.children

Но с поиском во вложенных вроде не очень просто в чистом JS, так что советую например jQuery взять.
С jQuery совсем никак. Вот и я хотел альтернативу JS найти, т.к. понимаю, что нельзя делать так. Но параметр id должен быть одинаков, к сожалению. Идеей по jQuery поделитесь?
PaHaNjkee вне форума Ответить с цитированием
Старый 12.01.2016, 16:41   #6
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Причем тут вложенность? ID уникальным на весь документ должен быть.

Так что так нельзя делать, ищите по другим признакам. class, name, tag, data-my-property, ...

getElementsByName, getElementsByClassName, getElemenetsByTagName, ...
querySelector https://developer.mozilla.org/en-US/.../querySelector
.parent
.children

Но с поиском во вложенных вроде не очень просто в чистом JS, так что советую например jQuery взять.
Спасибо Вам за идею. Заработало!
Код:
document.querySelector('div[id=webmoney-id-1] input[id=product-price]').value
PaHaNjkee вне форума Ответить с цитированием
Старый 12.01.2016, 16:42   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что значит должен? Нельзя по стандарту HTML одинаковые ID в одном документе иметь.
Уберите id и ищите по другим признакам. Например самое тупое — перебирать все элементы в .children (искать элемент с нужным тегом или свойством, например по классу или любое свое data-my-super-property="hello")
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.01.2016, 17:10   #8
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Все верно Алекс говорит,
Код:
document.querySelector('div[id=webmoney-id-1] input[id=product-price]').value
убирай эту вакханалию, айди инпута меняй на класс и юзай
Код:
document.querySelector('#webmoney-id-1 .product-price').value
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 12.01.2016, 19:09   #9
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Цитата:
Сообщение от PaHaNjkee Посмотреть сообщение
Но параметр id должен быть одинаков, к сожалению.
ха-ха

для вас котёл уже готов
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
document.getElementById (JS) Foreseen Помощь студентам 10 23.07.2015 13:21
GetElementById не работает s500 C# (си шарп) 5 26.03.2013 12:29
Вложенный класс в шаблон. Указатель на вложенный класс в возвращаемом значении метода шаблона. Что делать? Asya1994 Помощь студентам 3 09.12.2012 01:43
getElementById Eldrich JavaScript, Ajax 4 11.11.2011 22:14
Ошибка на document.getelementbyid в ИЕ! Andrey771 JavaScript, Ajax 3 05.09.2011 20:05