Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.01.2020, 19:53
Аспирант
Отправить личное сообщение для Jimmi Посмотреть профиль Найти все сообщения от Jimmi
 
Регистрация: 28.02.2014
Сообщений: 53

Дописать класс к id в функции document.getElementById
Функция document.getElementById позволяет обратиться к элементу через его id. Но как указать скрипту названия класса родителяского блока данного элемента?

Пример того как я представляю реализацию данного условия. Изменяем значение свойства value в теге input:
<div class="parent">
<input id="element" value="Отправить">
</div>

document.getElementById('.parent#element').value = 'Задать вопрос';
$('.parent#element').val('Задать вопрос');
Ответить с цитированием
  #2 (permalink)  
Старый 20.01.2020, 20:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Jimmi
getElementById
querySelector
Ответить с цитированием
  #3 (permalink)  
Старый 20.01.2020, 20:22
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,708

document.querySelector('.parent #element').value = 'Задать вопрос';
$('.parent #element').val('Задать вопрос');


ID элемента должен быть уникальным.
Почитайте про селекторы:
https://learn.javascript.ru/css-selectors
Ответить с цитированием
  #4 (permalink)  
Старый 20.01.2020, 20:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Может тогда и <input type="submit" id="element" value="Отправить">?
Ответить с цитированием
  #5 (permalink)  
Старый 20.01.2020, 20:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Nexus, приветствую, сына заблудшего.
Ответить с цитированием
  #6 (permalink)  
Старый 21.01.2020, 08:28
Аспирант
Отправить личное сообщение для Jimmi Посмотреть профиль Найти все сообщения от Jimmi
 
Регистрация: 28.02.2014
Сообщений: 53

Сообщение от Nexus Посмотреть сообщение
document.querySelector('.parent #element').value = 'Задать вопрос';
$('.parent #element').val('Задать вопрос');


ID элемента должен быть уникальным.
Почитайте про селекторы:
https://learn.javascript.ru/css-selectors
Спасибо. Помогло!

Сообщение от Nexus Посмотреть сообщение
ID элемента должен быть уникальным.
Почитайте про селекторы:
https://learn.javascript.ru/css-selectors
Ситуации бывают разные. В данном случае input с одним и тем же id встречается в разных языковых версиях. Изменить input другим способом было бы сложнее. Именно поэтому обратился к JavaScript. За ссылку также спасибо.
Ответить с цитированием
  #7 (permalink)  
Старый 21.01.2020, 10:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Jimmi
Ситуации бывают разные.
Для ИД ситуация должна быть однозначной - он уникален на странице.
Если уникальности нет - используй class.
Ответить с цитированием
  #8 (permalink)  
Старый 21.01.2020, 10:44
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от ksa
Для ИД ситуация должна быть однозначной - он уникален на странице.
Вообще-то человек правильно написал — ситуации бывают разные! На странице может быть, например, 5 явно не достигаемых при помощи document.getElementById элементов с одинаковым id (поскольку они в разных Shadow DOM) и один явно достигаемый при помощи document.getElementById элемент с тем же id. Хотя получается, что на странице 6 элементов с одинаковыми идентификаторами, невозможно сказать, что нет уникальности.
Ответить с цитированием
  #9 (permalink)  
Старый 21.01.2020, 12:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Malleys
на странице 6 элементов с одинаковыми идентификаторами
Это уже не верно по определению...
Ответить с цитированием
  #10 (permalink)  
Старый 21.01.2020, 13:00
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от ksa
Это уже не верно по определению
А вы разве знаете определение?

Вот, читаем в спецификации
Сообщение от https://www.w3.org/TR/html53/dom.html#element-attrdef-global-id
When specified on HTML elements, the id attribute value must be unique amongst all the IDs in the element’s tree and must contain at least one character. The value must not contain any space characters.
Как видите, согласно спецификации, нет необходимости, чтобы на странице был только один элемент с указанным идентификатором.

Вот, например, на странице два элемента с одинаковым id, но они находятся в разных деревьях DOM, что полностью удовлетворяет требованиям спецификации.
<section id="a">a</section>
<section id="b">b</section>
<script>
	const root = document.getElementById("b").attachShadow({ mode: "closed" });
	root.appendChild(document.getElementById("a").cloneNode(true));
</script>

Последний раз редактировалось Malleys, 21.01.2020 в 13:15.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции страницы из расширения chrome nontxt Events/DOM/Window 0 09.02.2015 10:42
Изменение прототипа функции tsigel Общие вопросы Javascript 11 15.05.2014 01:03
Добавление функции внутрь другой функции Lion_astana jQuery 9 28.12.2013 14:33
AJAX в функции dmitriyk AJAX и COMET 4 16.12.2013 12:43
пользовательские cобытия и функции jquery hurt3 jQuery 2 08.07.2013 09:13