【问题标题】:Unterminated string constant JavaScript未终止的字符串常量 JavaScript
【发布时间】:2012-08-21 21:32:53
【问题描述】:

未终止的字符串常量

你好 我有一个php代码:

$bodier .= "setInterval('updateClock(\"$date2\",\"clock$x\")',1000);";

我是这样使用的:

<body onLoad="<?php echo trim($bodier) ; ?>">

它产生:

<body onLoad="setInterval('updateClock("2012-10-31 13:14:01","clock0")',1000);
setInterval('updateClock("2012-08-30 13:10:31","clock1")',1000);
setInterval('updateClock("2012-08-30 10:16:46","clock2")',1000);
setInterval('updateClock("2012-08-30 10:17:28","clock3")',1000);
setInterval('updateClock("2012-09-07 10:17:47","clock4")',1000);
setInterval('updateClock("2012-08-30 10:18:27","clock5")',1000);
setInterval('updateClock("2012-08-29 10:18:41","clock6")',1000);">

它产生一个错误: 终止字符串常量

我做错了什么

我还尝试将 psting simpley 复制为硬编码而不是 php echo 部分的输出

【问题讨论】:

    标签: php javascript mysql


    【解决方案1】:

    有效的html语法是

    <body onLoad="setInterval('updateClock(\"2012-10-31 13:14:01\",\"clock0\")',1000);">
    

    你看,什么都没有。

    【讨论】:

      【解决方案2】:

      您在两种不同的含义中使用 "。您不应该在 onload 字符串定义中使用它们。尝试使用您的 setInterval 行定义一个函数,并在 onload 属性中加载函数名称。

      (当然也可以转义双引号!)

      【讨论】:

        【解决方案3】:

        您在这里犯了一个常见的错误,即在内容字符串中放置未转义的引号字符。看这个例子:

        "foo"bar"com"

        您可能会说字符串是foo"bar"com,实际上它是foo,因为下一个" 关闭了整个字符串。与您的代码相同。 HTML 解析器将:"setInterval('updateClock(" 视为您的 onLoad 脚本。这是错误的。

        编辑:某些字符需要对 HTML 进行特殊转义,这些字符称为 entities。因此,无论您输出要与 HTML 一起使用的内容,您都可能希望始终将其传递给 htmlspecialchars() 函数,以保持安全

        【讨论】:

          【解决方案4】:

          您在 php 代码中正确地转义了 ",但您还需要确保它在浏览器解析的 HTML 中被转义!

          使用&amp;quot;

          This topic may be useful.

          【讨论】:

            【解决方案5】:

            您在代码中多次混淆了"'

            尝试这样的事情(还包括使用函数,而不是 setInterval() 函数中的字符串,并将 JavaScript 与 HTML 标记分开):

            <script>
            function clockTimer( time, clock ) {
              setInterval( function(){ updateClock( time, clock ) }, 1000 );
            }
            
            function onLoader() {
              clockTimer("2012-10-31 13:14:01","clock0");
              clockTimer("2012-08-30 13:10:31","clock1");
              clockTimer("2012-08-30 10:16:46","clock2");
              clockTimer("2012-08-30 10:17:28","clock3");
              clockTimer("2012-09-07 10:17:47","clock4");
              clockTimer("2012-08-30 10:18:27","clock5");
              clockTimer("2012-08-29 10:18:41","clock6");
            }
            
            window.onload = onLoader;
            <script>
            
            <body>
            ...
            

            【讨论】:

              猜你喜欢
              • 2011-07-24
              • 2011-04-27
              • 1970-01-01
              • 1970-01-01
              • 2018-09-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多