簡體   English   中英

找不到錯誤的js語法

[英]Cannot find mistake js syntax

為什么我在這里得到意外的輸入結束:

row.
  append($("<a href='javascript:downloadFile('" + filename + "');'>" + filename + "</a>"));

定義了rowfilename是普通字符串嗎?

問題來自於四個單引號'你有內部追加所以它會被認為是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM