[英]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>
更高版本的代碼不起作用。 我究竟做錯了什么 ?
如果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 。
<a href="'index.php?module=Users&action=UsersAjax&file=TemplateMerge&templateid=<?PHP echo $temprow['templateid']; ?>">.....
您需要在參數周圍使用轉義的雙引號
...submittemplate(\"".$temprow['templateid']."\");'>".
因為你傳遞字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.