不正确地调用Javascript函数(参数问题)

时间:2014-06-08 03:04:27

标签: javascript php

我试图在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中遇到了一个奇怪的错误。 &#34;意想不到的令牌:&#39;}&#39; &#34;

有谁知道我在做错了什么?为什么不接受这个参数呢?

谢谢!

3 个答案:

答案 0 :(得分: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”)“。 不使用双引号发送参数,而是使用单引号。

答案 1 :(得分: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>';

答案 2 :(得分:1)

函数参数的第一个双引号实际上是关闭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>";

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