Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2012, 10:54
Интересующийся
Отправить личное сообщение для awas Посмотреть профиль Найти все сообщения от awas
 
Регистрация: 02.05.2010
Сообщений: 15

Расширение тега
Есть несколько тегов, например "<P>"
В каждом из них есть несколько тегов, например "<U>"
Кликнув по любому тегу "<U>", можно прочесть его "id":

<P id="A">
<U id="1" onClick="nomer(this)">A1</U>
<U id="2" onClick="nomer(this)">A2</U>
<U id="3" onClick="nomer(this)">A3</U>
</P>

<P id="B">
<U id="4" onClick="nomer(this)">B4</U>
<U id="5" onClick="nomer(this)">B5</U>
<U id="6" onClick="nomer(this)">B6</U>
</P>

<P id="C">
<U id="7" onClick="nomer(this)">C7</U>
<U id="8" onClick="nomer(this)">C8</U>
<U id="9" onClick="nomer(this)">C9</U>
</P>


<script>
function nomer(x){
y=x.getAttribute("id")
alert(y)}
</script>

Как можно изменить скрипт, чтобы кликнув по любому тегу "<U>", можно было бы прочесть "id" тега "<P>", его содержащего, или порядковый номер этого тега "<P>" в документе?
То есть, кликнув по надписи, "B5" получить в alert: "B".
Понятно, что в тег "<P>" нельзя ставить "onClick", иначе бы и не было вопроса!
Что то из этой темы когда то читал, кажется, про "расширение какого то контейнера", но это было давно, и сейчас даже не помню, какая это тема.
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2012, 11:41
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

awas,
<P id="A">
<U id="1" onClick="alert(this.parentNode.id+this.id)">A1</U>
<U id="2" onClick="alert(this.parentNode.id+this.id)">A2</U>
<U id="3" onClick="alert(this.parentNode.id+this.id)">A3</U>
</P>
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2012, 12:16
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

забыть про атрибут onclick, использовать делегирование событий и parentNode цели клика
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2012, 14:57
Интересующийся
Отправить личное сообщение для awas Посмотреть профиль Найти все сообщения от awas
 
Регистрация: 02.05.2010
Сообщений: 15

Спасибо за "parentNode", не знал о таком!
Ответить с цитированием
  #5 (permalink)  
Старый 12.11.2012, 07:30
Интересующийся
Отправить личное сообщение для awas Посмотреть профиль Найти все сообщения от awas
 
Регистрация: 02.05.2010
Сообщений: 15

Не могу разобраться, как с помощью полученного таким способом "id", обратиться к тегу. Например, если к моему примеру, из первого поста, добавить кнопку с обращением в явном виде:

<input type="button" value="Pusk" onClick="B.style.backgroundColor='red'">

то как написать аналог этого, с помощью полученного "id"? Что то такого вида:

<script>
function nomer(x){
y=x.parentNode.id
y.style.backgroundColor='red'}
</script>

(для моей задачи для тега "<P>" нужно выполнить "select")

P.S. "onClick" использую только для демонстрации вопроса.
Ответить с цитированием
  #6 (permalink)  
Старый 12.11.2012, 09:27
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от awas
P.S. "onClick" использую только для демонстрации вопроса.
это всё и портит

при таком способе: запоминать id в глобальной переменной
Ответить с цитированием
  #7 (permalink)  
Старый 12.11.2012, 15:27
Интересующийся
Отправить личное сообщение для awas Посмотреть профиль Найти все сообщения от awas
 
Регистрация: 02.05.2010
Сообщений: 15

Цитата: "запоминать id в глобальной переменной"
Это как? Ни один из нижеприведенных вариантов не работает:

<script>
var y=''
function nomer(x){
y=x.parentNode.id
y.style.backgroundColor='red'}
</script>

<script>
var y='B'
function nomer(x){
y.style.backgroundColor='red'}
</script>

<script>
var y=x.parentNode.id
function nomer(x){
y.style.backgroundColor='red'}
</script>

Хотя работает такой вариант:

<script>
function nomer(x){
B.style.backgroundColor='red'}
</script>
Ответить с цитированием
  #8 (permalink)  
Старый 12.11.2012, 15:39
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

document.getElementById(y)
Ответить с цитированием
  #9 (permalink)  
Старый 12.11.2012, 18:54
Интересующийся
Отправить личное сообщение для awas Посмотреть профиль Найти все сообщения от awas
 
Регистрация: 02.05.2010
Сообщений: 15

Да, такой вариант, работает:

<script>
function nomer(x){y=x.parentNode.id
document.getElementById(y).style.backgroundColor=' red'}
</script>

До получения вашего ответа, подбором нашёл ещё такой вариант:

<script>
function nomer(x){
x.parentNode.style.backgroundColor='red'}
</script>

И для моей задачи:

<script>
function nomer(x){
tr=document.selection.createRange()
tr.moveToElementText( x.parentNode )
tr.select()}
</script>

Спасибо за помощь!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать расширение файл maximus Общие вопросы Javascript 3 17.05.2014 16:47
Как определить расширение файла по содержимому? exvion Firefox/Mozilla 1 15.04.2012 22:16
определить ширину див тега dadli Общие вопросы Javascript 6 20.02.2012 16:34
как получить значение ид-а, из текушего хтмл тега dadli Общие вопросы Javascript 2 28.01.2012 15:16
Как узнать Расширение монитора? sukubba Общие вопросы Javascript 2 11.12.2010 06:19