简单的PHP网页中有趣的输出

时间:2012-01-05 15:14:14

标签: php

这是一个非常简单的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输出(截图) Screenshot

4 个答案:

答案 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.")'>";?>>

身体标签未关闭