Встроенный вывод Javascript - PullRequest
11 голосов
/ 04 июля 2011

В javascript предположим, что у вас есть этот кусок кода:

<div>
    <script type="text/javascript">var output = 'abcdefg';</script>
</div>

Есть ли способ просто "отразить" (используя терминологию PHP) содержимое output в #test? То есть для вывода строки в строке, если у вас нет стандартного способа обхода или выбора из DOM?

document.write("..."); записывает содержимое output, но при этом он заменяет весь документ на output.

Решение, которое я ищу, должно действовать так же, как PHP echo: записывать вывод в документ в строке.

Ответы [ 7 ]

10 голосов
/ 04 июля 2011

Вы должны использовать document.write [документы] :

<div id="test">
    <script type="text/javascript">document.write('abcdefg');</script>
</div>  

DEMO

С оговоркой, что он не работает в документах XHTML.Смотрите документацию для более подробной информации.

7 голосов
/ 04 июля 2011

"Кошерный" код в стороне, да.

document.write()

5 голосов
/ 04 июля 2011

В основанных на стандартах браузерах:

document.getElementByID("test").textContent = output;

Для более широкой поддержки вы можете использовать text в jQuery (или эквивалентный метод, если ваша библиотека выбрана):

$('#test').text(output);
1 голос
/ 01 января 2014

Я знаю, что это старый вопрос, но если кто-то все еще смотрит, вот удобная функция, которая делает эту работу.

function echo(text)
{
    document.body.appendChild(document.createElement("div")).appendChild(document.createTextNode(text));
}
1 голос
/ 04 июля 2011

Если ваш код находится в div, то document.write('abcdefg') является правильным выбором для вставки чего-либо встроенного в точку выполнения.

Или, если ваш код не находится внутри div, вы можете сделать это:

<div id="test">
</div>

<script type="text/javascript">
var output = 'abcdefg';
document.getElementById("test").innerHTML = output;
</script>

Вы должны будете убедиться, что ваш код выполняется ПОСЛЕ загрузки страницы и наличия div.

1 голос
/ 04 июля 2011

Вы можете написать что-то вроде:

<div id="test">
  <script>
    document.getElementById('test').innerHTML = "stuff";
    //this line only changes content in the div with id="test", not the whole dom
  </script>
</div>

Но вам не следует помещать скрипт в div, потому что он может быть перезаписан.

0 голосов
/ 04 июля 2011

console.log ()

http://getfirebug.com/logging

также поддерживается в Chrome и, т. Е. 9 .. следите за совместимостью в обратном направлении, это даст вам ie8 и вниз, я думаю ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...