在JavaScript中有一个PHP回声/打印等效

说我想从脚本标记内打印HTML。

像这样的来源

<div>foo</div> <script> print('<div>Print this after the script tag</div>'); </script> <div>bar</div> 

应该在脚本运行后在浏览器中看起来像这样

 <div>foo</div> <script> print('<div>Print this after the script tag</div>'); </script> <div>Print this after the script tag</div> <div>bar</div> 

我可以为此编写自己的代码,但是由于这看起来像是一个非常简单的问题,所以我猜想是我错过了某些东西,或者我的思维存在某种缺陷,并且打印被故意排除在外。

此外,有点相关:我想知道脚本是否(或可以)知道它周围的脚本标签。 有了这些信息,如果不打算高度警惕,find打印的html代码的位置就会容易得多。

澄清:我不需要你为我写一个打印function。 我只需要知道是否存在一个本地方法来实现这一点,我已经错过了,或者不应该这样做的原因。

编辑我意识到,我没有想通过这个问题。

我得到了我的事实,现在几乎一切似乎工作。 我应该最初提到模板内需要打印function – 我正在进行模板引擎实验。 我设法通过分离脚本从纯html和拼接拆分html sans脚本与脚本输出。

当我写代码的时候,我注意到由于js的asynchronous特性,一切都不会那么顺利。 我想我期待能够在模板中做任何types的js魔术,就像我可以在php中一样。 似乎实际上支持asynchronous代码在一个模糊的内部模式将需要更多的思考。

你需要使用document.write()

 <div>foo</div> <script> document.write('<div>Print this after the script tag</div>'); </script> <div>bar</div> 

请注意,这只有在您正在编写文档的过程中才有效。 一旦文档被渲染,调用document.write()将清除文档并开始写一个新文档。 如果这是你的用例,请参考提供给这个问题的其他答案。

你可以使用document.write ,但这不是一个好习惯,它可能会清除整个页面,取决于它的执行时间。

你可以像这样使用Element.innerHtml

 <div>foo</div> <span id="insertHere"></span> <div>bar</div> <script> var el = document.getElementById('insertHere'); el.innerHTML = '<div>Print this after the script tag</div>'; </script> 
 // usage: log('inside coolFunc',this,arguments); // http://paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/ window.log = function(){ log.history = log.history || []; // store logs to an array for reference log.history.push(arguments); if(this.console){ console.log( Array.prototype.slice.call(arguments) ); } }; 

使用window.log将允许您执行与console.log相同的操作,但它会检查您使用的浏览器是否具有首先使用console.log的能力,以免出于兼容性原因错误(IE 6等)。

你可以使用document.write甚至是console.write (这对于debugging来说是很好的)。

但是,你最好的select,它让你更多的控制是使用DOM来更新页面。

 $('element').html('<h1>TEXT TO INSERT</h1>'); 

要么

 $('element').text('TEXT TO INSERT'); 

这是另一种方式:

 <html> <head> <title>Echo</title> <style type="text/css"> #result{ border: 1px solid #000000; min-height: 250px; max-height: 100%; padding: 5px; font-family: sans-serif; font-size: 12px; } </style> <script type="text/javascript" lang="ja"> function start(){ function echo(text){ lastResultAreaText = document.getElementById('result').innerHTML; resultArea = document.getElementById('result'); if(lastResultAreaText==""){ resultArea.innerHTML=text; } else{ resultArea.innerHTML=lastResultAreaText+"</br>"+text; } } echo("Hello World!"); } </script> </head> <body onload="start()"> <pre id="result"></pre> </body> 

您可以使用

 function echo(content) { var e = docment.createElement("p"); e.innerHTML = content; e.hidden = true; document.currentScript.parentElement.replaceChild(document.currentScript, e); } 

它将用content参数中的文本replace当前正在执行的调用echo函数的脚本。

从w3school的JavaScript输出页面 ,

JavaScript可以用不同的方式“显示”数据:

使用window.alert()写入一个警告框。

使用document.write()写入HTML输出。

使用innerHTML写入HTML元素。

使用console.log()写入浏览器控制台。