Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.05.2009, 03:24
Новичок на форуме
Отправить личное сообщение для Alazaur Посмотреть профиль Найти все сообщения от Alazaur
 
Регистрация: 16.05.2009
Сообщений: 9

создание объекта при нажатии на который вставка в форму из третьего + примочка
Здравствуйте!
Взялся изучать JavaScript
Встал вопрос, как можно сделать вот такую вещь (с одной стороны вроде просто но ни где не нашел), для наглядности нарисовал структуру документа:

Итак, имеем, <div class=content>, внутри которого в свою очередь есть <strong> с текстом внутри.
Задача, с помощью скрипта создать ссылку, которая будет расположена внутри всех <div'ов> с классом content (на рисунке место под ссылку область с пунктирной границей) и при нажатии на эту ссылку в текстовое поле вставлялось бы содержимое <strong'a>, который находится именно в том <div'e> в котором эта ссылка была нажата.
Ну как вставить во все div'ы ссылку я догадываюсь, а вот со всем остальным....
Ответить с цитированием
  #2 (permalink)  
Старый 16.05.2009, 03:27
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Alazaur
а вот со всем остальным....
Наверно этого не хватает: http://yandex.ru/yandsearch?text=getElementsByClassName
Ответить с цитированием
  #3 (permalink)  
Старый 16.05.2009, 03:44
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,234

http://javascript.ru/start/dom
полагаю ТС-у нужно все-таки это.
Alazaur,
после прочтения этих метериалов, если будут еще вопросы, задавайте.
но только уже конкретно, а не размыто
Ответить с цитированием
  #4 (permalink)  
Старый 16.05.2009, 11:28
Новичок на форуме
Отправить личное сообщение для Alazaur Посмотреть профиль Найти все сообщения от Alazaur
 
Регистрация: 16.05.2009
Сообщений: 9

Прошу извинить за такой пространственный вопрос, видимо спал уже)
Конкретизирую:
<script>
var CreateA= "<a href='#post' onclick='document.post.msg.innerHTML=this.parentNode.strong'>Вставка</a>";
var arr=document.getElementsByTagName("div");
i=0;
while(arr[i] ){
if(arr[i].className=="content"){
name=arr[i].innerHTML;
name=name.substring(0);
arr[i].innerHTML=name+"<br>"+CreateA;
}
i++
}
</script>

Естественно не работает
Я так понимаю, что-то надо добавить this.parentNode.strong.сюда, а что ума не приложу. И вопрос в догонку - при повторном нажатии в форму уже не добавляется ничего, как сделать чтобы работало, где-нибудь воткнуть return или что :secret:
Ответить с цитированием
  #5 (permalink)  
Старый 16.05.2009, 11:54
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Я так понимаю, что-то надо добавить this.parentNode.strong.сюда, а что ума не приложу
getElementsByTagName
Ответить с цитированием
  #6 (permalink)  
Старый 16.05.2009, 12:02
Новичок на форуме
Отправить личное сообщение для Alazaur Посмотреть профиль Найти все сообщения от Alazaur
 
Регистрация: 16.05.2009
Сообщений: 9

x-yuri,
я чего то туплю, ты имел ввиду getElementsByTagName('strong') как я понял, но при таком раскладе в форму добавляется - [object HTMLCollection]
Ответить с цитированием
  #7 (permalink)  
Старый 16.05.2009, 12:08
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

getElementsByTagName возвращает массив элементов, свойство innerHTML - содержимое элемента (включая html-тэги)
Ответить с цитированием
  #8 (permalink)  
Старый 16.05.2009, 12:18
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,234

очень извиняюсь.
пытался набрать максимально информативный пост, но из-за случайного F5 не вышло. а по второму разу писать нервов нету
короче:оно работает.
поместите этот код в обработчик события window.onload
window.onload=function(){
var CreateA= "<a href='#post' onclick='document.post.msg.innerHTML=this.parentNode.strong'>Вставка</a>";
var arr=document.getElementsByTagName("div");
i=0;
while(arr[i] ){
if(arr[i].className=="content"){
name=arr[i].innerHTML;
name=name.substring(0);
arr[i].innerHTML=name+"<br>"+CreateA;
}
i++
}
}
Ответить с цитированием
  #9 (permalink)  
Старый 16.05.2009, 12:34
Новичок на форуме
Отправить личное сообщение для Alazaur Посмотреть профиль Найти все сообщения от Alazaur
 
Регистрация: 16.05.2009
Сообщений: 9

Gvozd, x-yuri, та что ж такое то
x-yuri, при попытке сделать как ты сказал, т.е:
document.post.msg.innerHTML=this.parentNode.getElementsByTagName('strong').innerHTML

В форму вставляется - undefined.
Gvozd, тоже самое - undefined....
вот приведу весь код:
<html>
<body>
<div class="content" style="border: 1px solid #000; width: 300px; height: 100px; background: gray;">
<strong>Текст1</strong>
</div>
<div class="content" style="border: 1px solid #000; width: 300px; height: 100px; background: gray;">
<strong>Текст2</strong>
</div>
<form name="post" id="post">
<textarea name="msg" style="width: 300px; height: 100px;"></textarea>
</form>
<script>
window.onload=function(){
var CreateA= "<a href='#post' onclick='document.post.msg.innerHTML=.......'>Вставка</a>";
var arr=document.getElementsByTagName("div");
i=0;
while(arr[i] ){
if(arr[i].className=="content"){
name=arr[i].innerHTML;
name=name.substring(0);
arr[i].innerHTML=name+"<br>"+CreateA;
}
i++
}
}
</script>
</body>
</html>

Там где проблема возникает поставил многоточие

Последний раз редактировалось Alazaur, 16.05.2009 в 12:48.
Ответить с цитированием
  #10 (permalink)  
Старый 16.05.2009, 13:06
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,234

так у вас эта часть не работала?
var CreateA= "<a href='#post' onclick='document.post.msg.innerHTML=this.parentNode.getElementsByTagName(\"strong\")[0].innerHTML>Вставка</a>";

пробуйте
Ответить с цитированием
Ответ



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

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