<html>
<head>
<?php
$bldg_number=-1;
?>
<script language="javascript" type="text/javascript">
var bldg=<?php echo $bldg_number; ?>
if( bldg < 0)
{
alert("me");
}
else
{
alert("hi");
}
</script>
我期待输出警报,但是当我运行此页面时没有输出请告诉我为什么php变量的值没有传递给javscript变量
答案 0 :(得分:3)
您的代码需要var
行末尾的分号(请继续阅读原因):
<script language="javascript" type="text/javascript">
// here --------------v
var bldg=<?php echo $bldg_number; ?>;
if( bldg < 0)
{
alert("me");
}
else
{
alert("hi");
}
</script>
JavaScript有一个名为“Automatic Semicolon Insertion”的功能,通常会使该错误无害(功能是否无害是另一个故事),但不幸的是PHP混乱了,因为ASI只会踢如果有一个缺少分号的换行符,PHP eats the linebreak following the ?>
tag:
...当PHP点击
?>
结束标记时,它只是开始输出它找到的任何内容(除了紧接着的新行 - 请参阅instruction separation)
所以实际输出到你的页面是:
var bldg=-1 if( bldg < 0)
...这是JavaScript中的语法错误。添加分号会修复它,因为输出是:
var bldg=-1; if( bldg < 0)
......这是有效的。
答案 1 :(得分:0)
尝试
var bldg=<?php echo $bldg_number; ?>;