在javascript函数中传递多个参数


passing more than one argument in javascript function

我在Php中有一个预先编写的代码,其中JavaScript函数被称为

echo "<a href='javascript:submittemplate(".$temprow['templateid'].");'>".$temprow["templatename"]."</a></td>";

脚本是:

  <script>
        function submittemplate(templateid)
        {
            window.document.location.href = 'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid='+templateid;
        }
 </script>

现在我想在这个函数中再传递一个参数。
我做的是:

echo "<a href='javascript:submittemplate(".$temprow['templateid'].",".$mode.");'>".$temprow["templatename"]."</a></td>";


<script>
function submittemplate(templateid,mode)
{
alert("anything");
    window.document.location.href = 'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid='+templateid;
}
</script>

Later代码不起作用。我做错了什么?

如果mode变量是string,则会引发错误。

例如alert(myString Is Here) // throw error

应该是alert("myString Is Here");

所以你必须添加报价如下:

echo "<a href='javascript:submittemplate(".$temprow['templateid'].",'"".$mode."'");'>"

注意'"

我猜您会因为输出的值而产生无效的Javascript语法。打开浏览器的Javascript控制台来调试Javascript并查看任何错误。

当将PHP值输出到Javascript时,应该确保它们不会破坏语法。最好的方法是对它们进行JSON编码,因为JSON是有效的Javascript。正如您也应该用HTML对您的值进行HTML编码一样:

<a href="javascript:submittemplate(<?php echo htmlspecialchars(json_encode($temprow['templateid']), ENT_COMPAT); ?>, <?php echo htmlspecialchars(json_encode($mode), ENT_COMPAT); ?>);"><?php echo htmlspecialchars($temprow["templatename"]); ?></a></td>

由于这是一个非常不可读的单行,您应该考虑使用Javascript将onclick事件绑定到链接,而不是使用href="javascript:"目标。看见http://en.wikipedia.org/wiki/Unobtrusive_Javascript#Separation_of_behavior_from_markup.

  1. 不要使用javascript:协议,使用onclick并返回false
  2. 为什么要使用JavaScript
  <a href="'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid=<?PHP echo $temprow['templateid']; ?>">.....

您需要在参数周围使用转义双引号

...submittemplate('"".$temprow['templateid']."'");'>".

因为您正在传递字符串