【问题标题】:Improperly called Javascript function (parameter issue)Javascript函数调用不当(参数问题)
【发布时间】:2014-06-08 03:04:27
【问题描述】:

我正在尝试在 div 中使用 PHP 来回显一些 HTML。一切正常,直到我尝试将参数传递给 onclick=\"loadpuzzle()\" 函数。当我尝试 onclick=\"loadpuzzle(4)\" 并且函数获取参数并正常执行时它运行良好,但我需要将 $row['puzzlename'] 中的值作为参数传递,我假设是一个字符串(所以我用引号括起来)。

echo "<td><input id=\"".$row['puzzlename']."\" type=\"radio\" name=\"puzzle-set\"     class=\"puzzle_selector\"  onclick=\"loadpuzzle(\"".$row['puzzlename']."\")\"/>  
        <label for=\"".$row['puzzlename']."\" class=\"puzz_label\">".$row['puzzlename']."</label></td>";

当我尝试运行它时,我在 Safari 中遇到了一个奇怪的错误。 “意外的令牌:'}'”。

有谁知道我在这里做错了什么?为什么不带这个参数?

谢谢!

【问题讨论】:

  • 也许你也可以在这段代码周围发布代码
  • 你能提供一个生成标记的例子吗?echoed?
  • 对不起?这些代码围绕着什么代码?我很高兴,我只是不确定你的意思:)
  • 标记是什么意思?对不起!哈哈,我是 PHP/Javascript 新手。
  • 上面写着Unexpected token: }。显然这不是您的 php 中唯一的代码,对吗?也许您可以发布更多内容,因为它不完整且无法进一步诊断。

标签: javascript php


【解决方案1】:

您可以尝试像您所做的那样转义所有双引号,或者可能切换到单引号以提高可读性。

echo '<td><input id="' . $row['puzzlename'] . '" type="radio" name="puzzle-set" class="puzzle_selector" onclick="loadpuzzle(\'' . $row['puzzlename'] . '\')"/>
      <label for="' . $row['puzzlename'] . '" class="puzz_label">' . $row['puzzlename'] . '</label></td>';

【讨论】:

  • 哦...我认为在某些地方需要双引号。谢谢!我得去了解其中的区别。
【解决方案2】:
echo "<td><input id=\"".$row['puzzlename']."\" type=\"radio\" name=\"puzzle-set\"         class=\"puzzle_selector\"  onclick=\"loadpuzzle(\"".$row['puzzlename']."\")\"/>  
<label for=\"".$row['puzzlename']."\" class=\"puzz_label\">".$row['puzzlename']."</label></td>";

由于您使用的是 onclick=\"loadpuzzle(\"".$row['puzzlename']."\") ,它将呈现为 onclick="loadpuzzle("puzzlename")"。 不要使用双引号发送参数,而是使用单引号。

【讨论】:

  • 谢谢!对不起,最后一个人打败了你,但我仍然感谢你的回答:)
【解决方案3】:

函数参数的第一个双引号实际上是关闭 onclick 定义的开始双引号。像这样使用单引号:

echo "<td><input id=\"".$row['puzzlename']."\" type=\"radio\" name=\"puzzle-set\" class=\"puzzle_selector\"  onclick=\"loadpuzzle('".$row['puzzlename']."')\" /><label for=\"".$row['puzzlename']."\" class=\"puzz_label\">".$row['puzzlename']."</label></td>";

我还会考虑重写整个输出以减少转义。它变得越来越难以阅读,并且ahem 容易出错。

【讨论】:

  • 你是最棒的!这行得通:)该死的,我认为 \ 令牌会解决这个问题......我猜不是。谢谢!
  • 另外,我肯定会考虑编写此输出以提高可读性且不易出错。我想任何程序员都会。我只是没有专业知识,现在我正处于如果它有效,它就有效的阶段。不过还是谢谢你的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 2015-06-18
  • 2011-07-19
  • 1970-01-01
相关资源
最近更新 更多