关于onclick的快速提问

时间:2010-03-01 20:19:20

标签: javascript onclick

我可以这样做:

<a href="#" id="thelink" onclick="window.parent.OpenVote("<? echo $_GET['id']; ?>", '<? echo $rowData['username']; ?>');">

它似乎无法工作..

3 个答案:

答案 0 :(得分:1)

你可以,但你需要使用单引号传递一个参数,否则你将逃脱onclick属性。

<a href="#" id="thelink" onclick="window.parent.OpenVote('<? echo $_GET['id']; ?>', '<? echo $rowData['username']; ?>');">

答案 1 :(得分:1)

第一个问题是onclick属性值内的引号。你要么必须使用&quot;对它们进行html编码,要么使用撇号:

<a href="#" id="thelink" onclick="window.parent.OpenVote('<? echo $_GET['id']; ?>', '<? echo $rowData['username']; ?>');">

然后你必须考虑你在代码中放置的值。

首先,您必须对值进行编码,以便它们可以是Javascript代码中的字符串文字。如果它们中可以有任何反斜杠字符,你必须用双反斜杠替换它们,然后如果它们中可以有任何撇号,你必须通过在它们前面加一个反斜杠来逃避它们(即用反斜杠替换每个撇号和撇号)。

然后,您必须对整个脚本进行编码,以使其可以是HTML标记中的值。由于在静态代码中没有需要转义的字符,因此您只需要编码放在代码中的值。您必须对值进行HTML编码,以便将<>&"等任何字符替换为HTML实体。

答案 2 :(得分:0)

可能是由于onclick声明中的额外引号。

尝试使用单引号替换id参数周围的双引号:

<a href="#" id="thelink" onclick="window.parent.OpenVote('<? echo $_GET['id']; ?>', '<? echo $rowData['username']; ?>');">