在javascript中是否有等效的PHP echo / print

假设我要从脚本标签内打印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>

我可以为此目的编写自己的代码,但是由于这对我来说似乎是一个非常简单的问题,所以我猜测是我遗漏了某些东西,或者我的思维在某种程度上有缺陷,并且故意不进行打印。

另外,有些相关:我想知道脚本是否(或可以使)脚本周围的脚本标签。 有了这些信息,假定不强烈建议不要查找要注入的已打印html代码的位置。

需要说明的是:我不需要您为我编写打印功能。 我只需要知道实现此目标的本机方法是否存在,而我已经错过了它,或者不应该这样做的原因。

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

我直言不讳,现在几乎所有事情似乎都在起作用。 我本来应该提到模板中需要打印功能-我正在进行模板引擎实验。 我设法通过将脚本与纯html分开,并将拆分的html sans脚本与脚本输出连接起来来解决这个问题。

在编写代码时,我注意到由于js的异步特性,一切都不会那么顺利。 我想我期望能够在模板中执行任何形式的js魔术,就像在php中一样。 似乎实际上需要以愚蠢的方式在模板内部支持异步代码将需要更多的考虑。

jpeltoniemi asked 2019-11-19T01:37:22Z
10个解决方案
58 votes

您需要使用document.write()

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

请注意,这仅在您正在编写文档的过程中有效。 呈现文档后,致电document.write()将清除该文档并开始编写新文档。 如果这是您的用例,请参考对此问题提供的其他答案。

Mike Brant answered 2019-11-19T01:37:57Z
30 votes

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

您应该这样使用Element.innerHtml

<div>foo</div>
<span id="insertHere"></span>
<div>bar</div>

<script>
document.getElementById('insertHere').innerHTML = '<div>Print this after the script tag</div>';
</script>
Lance answered 2019-11-19T01:38:27Z
3 votes
// 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等)。 )。

Lil' Bits answered 2019-11-19T01:38:51Z
2 votes

您可以使用

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

它将用content参数中的文本替换当前执行的调用echo函数的脚本。

Awesomeness01 answered 2019-11-19T01:39:16Z
1 votes

在w3school关于JavaScript输出的页面上,

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

使用window.alert()写入警报框。

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

使用innerHTML写入HTML元素。

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

Max answered 2019-11-19T01:40:12Z
0 votes

您可以使用document.write甚至console.write(这对于调试很有用)。

但是最好的选择是,它使用DOM来更新页面,它可以为您提供更多控制权。

Ed Heal answered 2019-11-19T01:40:44Z
0 votes
$('element').html('<h1>TEXT TO INSERT</h1>');

要么

$('element').text('TEXT TO INSERT');
Zecrow answered 2019-11-19T01:41:03Z
0 votes

这是另一种方式:

<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>

hhaseli answered 2019-11-19T01:41:27Z
0 votes

//我们将在js中创建自己的函数,例如echo“ Hello world”。

function echo( ...s ) // write for more detail below
 { 
   for(var i = 0; i < s.length; i++ ) {


    document.write(s[i] + ' '); // quotes for space
   }

 } 

  // Now call to this function like echo

 echo('Hellow', "World");

注意:...喜欢在一个对象/数组中访问更多参数,要从对象/数组中获取值,我们应该使用for循环或其他方法来迭代整个对象/数组,但是for是常见的,例如下面,s是名称 我只是让你可以写任何你想要的。

BloodyLogic answered 2019-11-19T01:41:58Z
-1 votes

l('output text example')

一次定义后

l=console.log

对于我来说,在浏览器控制台中进行快速的hacksy JS调试对我来说似乎很好。

根据@Lil'Bits的回答-谢谢!

Aaron Thoma answered 2019-11-19T01:42:42Z
translate from https://stackoverflow.com:/questions/13633085/is-there-a-php-echo-print-equivalent-in-javascript