JavaScript函数在php回显中工作吗?
Do javascript functions work within a php echo?
我正在清理我的代码,使其更加统一。我在 echo 命令中放置了几个 javascript 函数。我惊讶地发现,在我这样做之后,这些功能不再起作用。我没有收到任何错误,只是当我浏览页面时,我才注意到我的功能不再工作。我还处于javascript的起步阶段,所以我不确定这是否是一个常见的错误,但我找不到与之相关的任何内容。
我把它排除在第三行,去掉所有的回声,慢慢地添加更多,直到问题重新浮出水面。所以,我不确定我做错了什么。
这些功能的目的是在所有内容上制作灰色覆盖,然后弹出一个小的确认框,询问您是否要继续执行任务。
echo '<script type="text/javascript">';
echo 'function showPopUp(el) {';
echo 'var cvr = document.getElementById("cover")';
echo 'var dlg = document.getElementById(el)';
echo 'cvr.style.display = "block"';
echo 'dlg.style.display = "block"';
echo 'if (document.body.style.overflow = "hidden") {';
echo 'cvr.style.width = "100%"';
echo 'cvr.style.height = "100%"';
echo '}';
echo '}';
echo 'function closePopUp(el) {';
echo 'var cvr = document.getElementById("cover")';
echo 'var dlg = document.getElementById(el)';
echo 'cvr.style.display = "none"';
echo 'dlg.style.display = "none"';
echo 'document.body.style.overflowY = ""';
echo '}';
echo '</script>';
额外信息:整个页面都在 php 标签内,我发现了另一个行为相同的不相关函数。两者相似的唯一方法是它们都使用 var 命令并且它们都是函数。这可能是来源吗?
哦。我。神。
贵公司的标准是否"允许"以下情况?
echo <<<HTML
<script type="text/javascript">
function showPopUp(el) {
var cvr = document.getElementById("cover")
var dlg = document.getElementById(el)
cvr.style.display = "block"
dlg.style.display = "block"
if (document.body.style.overflow = "hidden") {
cvr.style.width = "100%"
cvr.style.height = "100%"
}
}
function closePopUp(el) {
var cvr = document.getElementById("cover")
var dlg = document.getElementById(el)
cvr.style.display = "none"
dlg.style.display = "none"
document.body.style.overflowY = ""
}
</script>
HTML;
或者只是:
<?php
// some PHP code
?>
<script type="text/javascript">
function showPopUp(el) {
var cvr = document.getElementById("cover")
var dlg = document.getElementById(el)
cvr.style.display = "block"
dlg.style.display = "block"
if (document.body.style.overflow = "hidden") {
cvr.style.width = "100%"
cvr.style.height = "100%"
}
}
function closePopUp(el) {
var cvr = document.getElementById("cover")
var dlg = document.getElementById(el)
cvr.style.display = "none"
dlg.style.display = "none"
document.body.style.overflowY = ""
}
</script>
<?php
//some MORE PHP code...
因为如果是这样,你会注意到你在if
语句中使用赋值:
if (document.body.style.overflow = "hidden")
应该是
if (document.body.style.overflow == "hidden")
注意:您这样做的方式是在一行上打印整个javascript块。如果必须以这种方式打印出来,则必须在必要时向打印的每个字符串添加分号或换行符。
生成的 JavaScript 在语法上不正确 - 这些行既不以分号结尾,也不以换行符结尾。替换为
echo 'var cvr = document.getElementById("cover");';
等等。
另外,我依稀记得在<script>
元素结束之后需要有一个换行符。在 PHP 中,echo 不会在末尾生成换行符,单引号中的字符串不允许使用像 ' 这样的转义序列。所以你需要做:
echo '<script type="text/javascript">'."'n";
您的echo
语句的问题在于缺少空格/分号:
echo 'var cvr = document.getElementById("cover")';
echo 'var dlg = document.getElementById(el)';
echo 'cvr.style.display = "block"';
在 HTML 中显示为:
var cvr = document.getElementById("cover")var dlg = document.getElementById(el)cvr.style.display = "block"
等。
这在JavaScript中没有意义。
相关文章:
- 咖啡的Javascript订单总数无法使函数正常工作.请协助
- removeClass函数没有'工作不正常
- 你能解释一下这个阶乘函数是如何工作的吗?
- JavaScript链接在点击时不起作用;函数在页面加载时工作
- jQuery加载的async和ready函数不工作
- 更改智能表中的页面将停止JQuery函数的工作
- 为什么不是'我的函数在解析云代码中工作吗?当我在Angular和Express中测试时,它是有效的
- jQuery函数不能只在一个页面上工作
- 如何检查这个代码点火器php函数是否工作,该函数是否在ajax url中使用
- 从js引擎的角度来看闭包和构造函数是如何工作的
- appendChild在函数外部工作,但在函数内部不工作
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 由于某种原因,我的JavaScript函数无法工作
- 为什么递归生成器函数没有't在ES2015工作
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- 从控制台中的工作函数转换为工作脚本.(请参阅编辑)
- Angular JS-工作函数中的“错误:[$interpole:interr]Can't interpole:
- 简化工作函数以替换特定单词
- 为什么不在回调中工作函数?
- InnerHTML不工作:函数未定义