提问人:Daniel F 提问时间:3/24/2023 更新时间:3/24/2023 访问量:97
有没有相当于php echo的js,包括所有的优点?
Is there a js equivalent to php echo, including all merits?
问:
我一直在使用php来更改我网站上的html和css。这和我想象的一样简单。只需在实际插入边框颜色或标题值的任何地方回显变量,即可完成所有设置。 我希望能够在 JS 上做到这一点。
也就是说,我想定义 js vars 以等于 php 变量,然后将 js vars 与我的 php 方法相同。意思是,在html / css表达式中,没有改变它。这样,我就可以根据用户操作随时随地更改显示的值。
我不想使用js命令,例如document.getElementId('whatever').style.color...我有成百上千的php变量,而不仅仅是几个,这将是一场噩梦。我也不想将 css 变量设置为等于 php 变量的 js 变量,或者这种相当苛刻的解决方法(同样,手头有大量更改,我不想让它变得更糟)。我想使用与 php 相同的方法(当然,如果它在 js 上不存在也没关系,但这就是问题所在)。
PS 如果有一种方法可以随时随地更改 php 变量,那也可以工作。我只是认为将它们设置为 js vars 会更容易,它们基本上应该在旅途中更改。
答:
前言:使用客户端 JavaScript 生成整个页面内容通常不是最佳做法。
浏览器环境中最接近的直接等价物是 document.write
,出于以下几个原因,您可能不想使用它:
这真的很啰嗦,因为你必须把所有东西都包在.
<script>...</script>
定义它的 HTML 规范反对使用它
它并非在所有地方都有效。
您不能在 .(您可以通过改为分配来解决此问题。
<title>...</title>
document.title
您不能在标签内使用它(在 和 之间)。这不起作用,例如:
<
>
<!-- Doesn't work: --> <div class="<script>document.write('x')</script>">___</div> <!-- Doesn't work: --> <div <script>document.write("class=x")</script>>___</div>
除此之外,它有效。而不是:
// PHP
<div><?=variableGoesHere?></div>
这将是
<!-- JavaScript in HTML -->
<div><script>document.write(variableGoesHere)</script></div>
你可以通过定义你自己的参数(并借此机会支持多个参数)来缩短它:echo
function echo(...msgs) {
document.write(msgs.join(""));
}
那么它将是:
<!-- JavaScript in HTML -->
<div><script>echo(variableGoesHere)</script></div>
或者,您可以完全用模板文字编写页面,然后在单个赋值中将其输出到(甚至,但如果有可能的话,我会正常编写文档),如下所示:document.body.innerHTML
document.documentElement.innerHTML
head
<!-- Here you'd have the usual
<html>
<head>
(head content)
</head>
<body>
...but Stack Snippets provide that -->
<script>
// Your variables
const x = "ecks";
const y = "why";
const z = "zee";
// Writing the HTML in a template literal:
document.write(`
<div>The value of x is ${x}</div>
<div>The value of y is ${y}</div>
<div>The value of z is ${z}</div>
`);
</script>
<!-- </body></html> -->
与脚本标签不同,您可以在任何地方进行替换。document.write
使用正确的 IDE 加载项,您甚至可以在模板文本中获得 HTML 语法突出显示。
或者,您可以搜索客户端渲染库,但这些是立即浮现在脑海中的内置选项。
评论
title
<
>
<body>body content here</body>
<body><script>document.write(`body content here`);</script></body>
<script>document.write(`
`);</script>
评论
echo
on the go