[英]Cannot find mistake js syntax
為什么我在這里得到意外的輸入結束:
row.
append($("<a href='javascript:downloadFile('" + filename + "');'>" + filename + "</a>"));
定義了row
, filename
是普通字符串嗎?
問題來自於四個單引號'
你有內部追加所以它會被認為是href
屬性為:
'的javascript:downloadFile('
使用雙引號"
單個的intead並轉義它們,例如:
$('body').append($("<a href=\"javascript:downloadFile('" + filename + "');\">" + filename + "</a>"));
希望這可以幫助。
var filename = "file name test"; $('body').append($("<a href=\\"javascript:downloadFile('" + filename + "');\\">" + filename + "</a>")); function downloadFile(file_name){ alert(file_name); }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
嘗試:
row.append($("<a href='javascript:downloadFile(\"" + filename + "\");'>" + filename + "</a>"));
您的原始代碼會生成以下字符串:
<a href='javascript:downloadFile('file1234.txt');'>file1234.txt</a>;
如你所見,第二個'結束了字符串。 所以你的href屬性實際上是:
href='javascript:downloadFile('
這是行不通的。
您獲得的錯誤來自使用撇號作為HTML屬性和JS字符串的分隔符。 結果來源看起來像
<a href='javascript:downloadFile('123.example');'>123.example</a>
<!-- ^ ^ ^ ^ -->
不使用任何轉義來模板化HTML,而是使用DOM! jQuery在這里使用起來非常方便。 對於JS字符串,使用JSON.stringify
來轉義它:
row.append($("<a />", {
href: 'javascript:downloadFile(' + JSON.stringify(filename) + ');',
text: filename
}));
但更好的是,不要使用javascript:
URI! 只需添加事件處理程序:
row.append($("<a />", {text: filename}).click(function(e) {
downloadFile(filename);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.