Javascript函数调用不当(参数问题)


Improperly called Javascript function (parameter issue)

我试图在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当我试图运行这个。"意外标记:'}' ".

有人知道我在这里做错了什么吗?为什么它不接受这个参数?

谢谢!

你可以试着转义所有的双引号,就像你所做的那样,或者也许为了可读性而切换到单引号。

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>';
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")"。使用单引号代替双引号发送参数

函数参数的第一个双引号实际上是关闭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容易出错。