为什么我在这里得到意外的输入结束:
row.
append($("<a href='javascript:downloadFile('" + filename + "');'>" + filename + "</a>"));
row
已定义,filename
是普通字符串吗?
答案 0 :(得分:1)
问题来自您在内部附加的四个单引号'
,因此它将href
属性视为:
'的javascript:downloadFile('
使用单引号的{-1}}双引号并转义它们,例如:
"
希望这有帮助。
$('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);
}
答案 1 :(得分:1)
尝试:
row.append($("<a href='javascript:downloadFile(\"" + filename + "\");'>" + filename + "</a>"));
您的原始代码会生成以下字符串:
<a href='javascript:downloadFile('file1234.txt');'>file1234.txt</a>;
如你所见,第二个&#39;结束字符串。所以你的href属性实际上是:
href='javascript:downloadFile('
不会工作。
答案 2 :(得分:1)
您获得的错误来自使用撇号作为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);
});