You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP echo输出两段JavaScript getElementById命令仅单条生效如何解决

问题根因

你的现有写法不符合JS语法规范:document.getElementById('xxx').innerHTML = 是未完成的赋值语句,你提前闭合了<script>标签,浏览器解析时会将<script>标签后的所有相邻文本,都当作第一个未完成的innerHTML赋值的内容,因此第二段的Arr:直接拼接到了flightTime3元素的展示值中,第二段针对flightDate3的JS逻辑无法被正常识别执行。

正确实现方案

方案1:将赋值内容完整写在JS逻辑内(最推荐)

直接将要设置的文本作为字符串放到JS的赋值语句中,不要拆分到<script>标签外部,PHP输出时注意对引号做转义处理即可:

// 为flightTime3赋值
echo "<script type='text/javascript'>document.getElementById('flightTime3').innerHTML = 'Dep: ';</script>";
// 为flightDate3赋值
echo "<script type='text/javascript'>document.getElementById('flightDate3').innerHTML = 'Arr: ';</script>";

如果赋值内容包含单引号,可以用转义符处理,也可以把JS字符串用双引号包裹、在PHP层面转义双引号:

echo "<script type='text/javascript'>document.getElementById('flightTime3').innerHTML = \"Dep: 10:45\";</script>";

方案2:内容需脱离JS输出时的兼容方案

如果业务逻辑要求文本内容不能写在JS语句内,可以先把文本放入隐藏的独立DOM节点,再通过JS读取节点内容完成赋值:

<!-- 预先输出待使用的文本内容 -->
<span id="depText" style="display:none">Dep: </span>
<span id="arrText" style="display:none">Arr: </span>
<?php
// 执行批量赋值逻辑
echo "<script type='text/javascript'>
document.getElementById('flightTime3').innerHTML = document.getElementById('depText').innerText;
document.getElementById('flightDate3').innerHTML = document.getElementById('arrText').innerText;
</script>";
?>

内容的提问来源于stack exchange,提问作者JamieNesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 00:45:03