这是一个非常简单的PHP页面,其中包含一个javascript函数。我看到输出不同。我无法理解为什么它会这样。
在下面的代码中,x回显为012012,但当我将其传递给javascript函数并将其显示在innerHTML中时,它的显示方式与5130不同!! !!
有人可以帮忙吗?
<?php
$x= date("mY");
echo $x;
?>
<html>
<head>
<script>
function myfunc1(y)
{
div1 = document.getElementById("mydiv1")
div1.innerHTML = y;
}
</script>
</head>
<body <?php echo "onload='myfunc1(".$x.")'>";?>
<div id="mydiv1" style="background:#efefef;border:1px solid green;height:100px;width:100px;text-align:center">
</div>
</body>
</html>
HTML输出
012012<html>
<head>
<script>
function myfunc1(y)
{
div1 = document.getElementById("mydiv1")
div1.innerHTML = y;
}
</script>
</head>
<body onload='myfunc1(012012)'> <div id="mydiv1" style="background:#efefef;border:1px solid green;height:100px;width:100px;text-align:center">
</div>
</body>
</html>
HTML输出(截图)
答案 0 :(得分:7)
因为前缀为0的数字被javascript视为八进制。
答案 1 :(得分:1)
这种情况正在发生,因为012012
被视为int。但是,由于它以0
开头,因此JavaScript将其视为基数8(八进制),因此将其转换为5130
。
您需要在引号中包含012012
,因此JavaScript会将其视为字符串。另外,我建议只使用PHP来回显你需要的值,而不是整个函数调用。使稍微更容易调试。
<body onload="myfunc1('<?php echo $x;?>')">
答案 2 :(得分:1)
使用Smarty,是PHP的框架模板!
PHP代码:
<?php
$foo = date('Y');
?>
简单打印PHP代码
<body onload="myFunctionJS('<?php echo $foo;?>')">
简单标记PHP(不推荐)
<body onload="myFunctionJS('<?=$foo;?>')">
使用智能模板框架
Smarty模板框架(PHP代码):
<?php $smarty = new Smarty; $var = date('Y'); $smarty->assign( 'foo' , $var ); ?>
Smarty模板框架(模板代码):
<body onload="myFunctionJS('{$foo}')">
答案 3 :(得分:0)
<body <?php echo "onload='myfunc1(".$x.")'>";?>
应该是
<body <?php echo "onload='myfunc1(".$x.")'>";?>>
身体标签未关闭