在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()写入浏览器控制台。