Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передача text из div в поле value (https://javascript.ru/forum/misc/32352-peredacha-text-iz-div-v-pole-value.html)

Aftal1ck 12.10.2012 22:42

Передача text из div в поле value
 
Есть галерея, в ней по клику меняется изображение и один див замещает другой (посредством "style="display: block;", в данном диве содержится название файла, необходимо именно из активного дива ("style="display: block;") вытащить название файла и присвоить value в inpute.

Буду очень благодарен за помощь.

Demath 13.10.2012 02:12

Получить в input текст div, вроде бы, так можно

<script type="text/javascript">
function sendValueInInput()
{
    a = document.getElementById('myInput');
    b = document.getElementById('myDiv');
    a.value = b.innerText;
}
</script>
<div id="myDiv" style="border: 1px solid red;">Текст <br>контейнера</div>
<input id="myInput" type="text">
<br>
<input type="button" value="Отправить" onclick="sendValueInInput()">

Aftal1ck 13.10.2012 10:05

Суть в том, что в моем случае нужен активный див (т.е. style="display:block").
Приведу пример:
<div id="box_lol_container1" class="box_lol_container" style="overflow: auto;">
<div class="lol_div" style="display: block;">image-1.jpg </div>
<div class="lol_div" style="display: none">image-2.jpg </div>
<div class="lol_div" style="display: none">image-3.jpg </div>

Первое по умолчанию стоит содержимое с контентом "image-1.jpg", после клика по изображения "style="display: block" присваивается следующему диву, следовательно на месте "image-1.jpg" стоит уже текст "image-2.jpg", мне необходим текст из актуального дива с "style="display: block". :-?

eirnvn 13.10.2012 11:08

<div id="box_lol_container1" class="box_lol_container" style="overflow: auto;">
<div class="lol_div" style="display: block;">image-1.jpg </div>
<div class="lol_div" style="display: none">image-2.jpg </div>
<div class="lol_div" style="display: none">image-3.jpg </div>
<input type="text" id="input" value='' />
	<script type="text/javascript">
		var input = document.getElementById('input');
		var container = document.getElementById('box_lol_container1');
		var lol_divs = document.getElementsByClassName('lol_div');
		for(var i=0;i<lol_divs.length; i++) {
		var lol_div = lol_divs[i];
		var computedStyle = getComputedStyle(lol_div)|| lol_div.currentStyle; 
		if(computedStyle.display == 'block') {
			input.value = lol_div.innerHTML;
		}
		}

eirnvn 13.10.2012 11:19

Ссылка: http://learn.javascript.ru/play/b14wr
Подскажите, как сделать чтоб запускалось здесь, а не в песочнице (к сожалению подзабылось) или ссылку, где об этом прочитать.

Demath 13.10.2012 13:14

eirnvn,

Замените открывающий тег [html] на [html run].

Aftal1ck 13.10.2012 16:47

Спасибо большое, с меня пиво, чай минимум)
Только одно но, скрипт выводит текст только с активного (style="display:block") дива на момент загрузки страницы, здесь необходимо выводить измененный текст при каждом клике, не переходя со страницы (динамически).

eirnvn 14.10.2012 00:12

Пиво не катит, только молоко. За вредность.
Вариантов много, смотря ,что вы хотите, возможно так (кликать по картинке).
<div id="box_lol_container1" class="box_lol_container" style="overflow: auto;">
<div class="lol_div" style="display: block;">image-1.jpg </div>
<div class="lol_div" style="display: none">image-2.jpg </div>
<div class="lol_div" style="display: none">image-3.jpg </div>
</div>
<input type="text" id="input" value='' />
<script type="text/javascript">
		var input = document.getElementById('input'),
		container = document.getElementById('box_lol_container1'),
		lol_divs = document.getElementsByClassName('lol_div'),
                lol_div;
                input.value = lol_divs[0].innerHTML;
		
		container.onclick = function(e) {
			var target = e && e.target|| event.srcElement;
			var next = target.nextElementSibling ||target.parentNode.firstElementChild;
			if(!next) {next = target.parentNode.firstElementChild; next.style.display ='block';}
			else {next.style.display = 'block'};
			target.style.display = "none";
			input.value = next.innerHTML;
		}
/*	    ^  ^
	   ^^^^^^
	 | 	@  @  |
	 ( = ~ = )            *
         -	             **
	   *****	        *** 
	  **********        ***
   ******************   **
***********************  
 ********************                             */
	</script>


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