2013-04-25 3 views
-1

Я не могу понять, почему этот внутренний HTML-скрипт не работает. Я разместил javascript на jsFiddle. Вы можете увидеть его здесь: http://jsfiddle.net/JyV73/1/Javascript innerHTML с всплывающим окном

У меня есть две версии ссылки. В первой ссылке переписывания находится всплывающее окно, которое нужно закрыть, а другое - с правильным текстом в текстовом поле.

Во-вторых, есть только ссылка на странице, что при нажатии на нее, мы надеемся, откроем всплывающее окно с соответствующим текстом в wht textarea.

Единственная проблема заключается в том, что она не работает для второй версии из-за того, что я должен закрыть всплывающее окно. Если я прокомментирую, что первый document.getElementById(id).style.display = 'none', то работает простая ссылка, поэтому моя первая мысль - создать две функции. Но поскольку этот javascript является частью файла шаблона php, который включен, я думаю, что было бы проще в PHP-коде просто решить это, используя чистый javascript.

Я все еще изучаю javascript, и любая помощь будет оценена по достоинству. Надеюсь, я поняла. Огромное спасибо.

HTML

<a href="#popup" rel="popup">open</a> 

<div id="popup" class="popup"> <a href="#new" rel="popup" onClick="rewrite('popup', 'blah')">Rewrite</a> 

</div> 
<div id="new" class="popup"> 
    <textarea id="new-text"></textarea> 
</div> 
<!-- This is the stuff that doesnt work for some reason <a href="#new" rel="popup"   onClick="rewrite('popup', 'blah')">Rewrite</a> 

<div id="new" class="popup"> 
<textarea id="new-text"></textarea> 
</div> 
--> 

Javascript

function rewrite(id, text) { 
    document.getElementById(id).style.display = 'none'; 
    document.getElementById('new-text').innerHTML = text; 
} 
+4

Пожалуйста, включите ваш код в вопрос, а не только на jsfiddle. Если этот сайт когда-либо уходит, ваш вопрос теряет весь контекст. – Madbreaks

+1

Хорошо, я добавил код к нему. Я просто хотел, чтобы вопрос был более кратким. – Alex

+0

Трудно сказать, что не работает, когда я нажимаю переписать, я вижу текстовое поле со значением «бла», которое, кажется, именно то, что вы хотите? Мне также трудно понять два разных случая, которые вы объяснили. –

ответ

1

Я не совсем понимаю, что вы пытаетесь сделать здесь, но из того, как я читаю ваш код, вы хотите установить значение текстовой области на определенное значение.

вот как вы делаете это: http://jsfiddle.net/JyV73/9/

function rewrite(id, text) { 
    $('#new-text').val(text); 
} 

Вы не используете всплывающие окна, вы используете модальности, что означает его в DIV внутри страницы, которая переключает видимость. Вы можете получить доступ к информации из этих компонентов, независимо от того, видны они или нет, fyi.

Тем не менее, я не совсем уверен в том, что вы пытаетесь сделать здесь.

+0

Параметр 'id' не используется, следует ли его удалить? –

+0

Кроме того, у вас есть две текстовые области с одним и тем же идентификатором. Идентификатор нельзя использовать повторно на одной странице, только классы могут. –

+0

Конечно, вы можете удалить идентификатор для моего примера, но его целью является передать идентификатор и установить значение для него. Вот мой обновленный код: http://jsfiddle.net/JyV73/15/ –

0

Я изменил document.getElementById('new-text').innerHTML = text; к document.getElementById('new-text').value = text;, потому что это атрибут текстового поля, которое вы хотите установить value.

Кроме того, каждый элемент на странице с ID должен иметь уникальный идентификатор (кажется, что вы, возможно, пытались повторно использовать идентификаторы в один момент, но, может быть, я ошибаюсь!)

Я до сих пор убежищем» т выработали именно то, что вы пытаетесь достичь, но эти изменения необходимо было, чтобы быть вне зависимости от того, что.

Этот код является достаточным для достижения вашей цели, хотя второй: http://jsfiddle.net/JyV73/19/

Я добавил onClick атрибут (onClick="rewrite('popup', 'blah')") к вашей ссылке «Открыть», чтобы сделать запись в текстовое поле. :)

+1

У меня есть атрибут id во всплывающем окне. Это просто совпадение, что «popup» - это имя как для id, так и для класса – Alex

+0

. Я действительно не понимаю jsfiddle, но я просто изменил идентификатор этого div на всплывающее окно и нажал обновление, и теперь он работает – Elliott

+0

Возможно, изменил его, если изменения jsfiddle будут применены и к вашей версии! – Elliott