Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   создание объекта при нажатии на который вставка в форму из третьего + примочка (https://javascript.ru/forum/misc/3707-sozdanie-obekta-pri-nazhatii-na-kotoryjj-vstavka-v-formu-iz-tretego-primochka.html)

Alazaur 16.05.2009 03:24

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

Итак, имеем, <div class=content>, внутри которого в свою очередь есть <strong> с текстом внутри.
Задача, с помощью скрипта создать ссылку, которая будет расположена внутри всех <div'ов> с классом content (на рисунке место под ссылку область с пунктирной границей) и при нажатии на эту ссылку в текстовое поле вставлялось бы содержимое <strong'a>, который находится именно в том <div'e> в котором эта ссылка была нажата.
Ну как вставить во все div'ы ссылку я догадываюсь, а вот со всем остальным....

Riim 16.05.2009 03:27

Цитата:

Сообщение от Alazaur
а вот со всем остальным....

Наверно этого не хватает: http://yandex.ru/yandsearch?text=getElementsByClassName

Gvozd 16.05.2009 03:44

http://javascript.ru/start/dom
полагаю ТС-у нужно все-таки это.
Alazaur,
после прочтения этих метериалов, если будут еще вопросы, задавайте.
но только уже конкретно, а не размыто

Alazaur 16.05.2009 11:28

Прошу извинить за такой пространственный вопрос, видимо спал уже)
Конкретизирую:
<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>

Естественно не работает :p
Я так понимаю, что-то надо добавить this.parentNode.strong.сюда, а что ума не приложу. И вопрос в догонку - при повторном нажатии в форму уже не добавляется ничего, как сделать чтобы работало, где-нибудь воткнуть return или что :secret:

x-yuri 16.05.2009 11:54

Цитата:

Я так понимаю, что-то надо добавить this.parentNode.strong.сюда, а что ума не приложу
getElementsByTagName

Alazaur 16.05.2009 12:02

x-yuri,
я чего то туплю, ты имел ввиду getElementsByTagName('strong') как я понял, но при таком раскладе в форму добавляется - [object HTMLCollection]

x-yuri 16.05.2009 12:08

getElementsByTagName возвращает массив элементов, свойство innerHTML - содержимое элемента (включая html-тэги)

Gvozd 16.05.2009 12:18

очень извиняюсь.
пытался набрать максимально информативный пост, но из-за случайного 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++
}
}

Alazaur 16.05.2009 12:34

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>

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

Gvozd 16.05.2009 13:06

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

пробуйте


Часовой пояс GMT +3, время: 10:56.