如何从href为表中的多个链接调用javascript函数
我有一个表,其中包含一个具有多个文件名的列。文件名实际上是链接,其中一些指向URL,另一些指向本地文件。我可以成功下载一个本地文件,并在单独单击时指向新窗口中的url 但是,当我试图通过如何从href为表中的多个链接调用javascript函数,javascript,href,location-href,Javascript,Href,Location Href,我有一个表,其中包含一个具有多个文件名的列。文件名实际上是链接,其中一些指向URL,另一些指向本地文件。我可以成功下载一个本地文件,并在单独单击时指向新窗口中的url 但是,当我试图通过href中的js函数动态传递文件名时,我遇到了一个未捕获的语法错误:意外标记:。当我在没有任何参数的情况下调用js函数时,这似乎不是问题,但是,所有链接都指向列中的最后一个文件名。我可以在浏览器的底部看到带有正确文件名的javascript:openLink(filename),但随后发生了错误 这是我的代码:
href
中的js函数动态传递文件名时,我遇到了一个未捕获的语法错误:意外标记:
。当我在没有任何参数的情况下调用js函数时,这似乎不是问题,但是,所有链接都指向列中的最后一个文件名。我可以在浏览器的底部看到带有正确文件名的javascript:openLink(filename),但随后发生了错误
这是我的代码:
function searchAjax(){
var $table = $("#tableGrid").tablesorter(),
$tbody = $table.children("tbody");
$.ajax({
dataType: 'json',
url: 'table_results',
type: 'GET',
data: $('#filterForm').serialize(),
success: function(data) {
$("#tableGrid").find("tr:gt(0)").remove();
$.each(data, function(index, result) {
function openLink(value){
var link = value;
if(link.indexOf("http") > -1 ){
window.open(link, "_blank");
}
else{
location.href="/projectv1?fileName="+link;
}
};
$tbody.append(
"<tr>" +
"<td>" + result.regionCode + "</td>" +
"<td>" + result.nationCode + "</td>" +
"<td>" + '<a href="javascript:openLink('+result.link+')" target="_blank">link</a></td>"' +
"</tr>");
});
$("#tableGrid").trigger("update");
}
});
};
函数searchAjax(){
var$table=$(“#tableGrid”).tablesorter(),
$tbody=$table.children(“tbody”);
$.ajax({
数据类型:“json”,
url:“表_结果”,
键入:“GET”,
数据:$('#FilterPerform')。序列化(),
成功:功能(数据){
$(“#tableGrid”).find(“tr:gt(0)”.remove();
$.each(数据、函数(索引、结果){
函数openLink(值){
var-link=价值;
if(link.indexOf(“http”)>-1){
打开(链接为“空白”);
}
否则{
location.href=“/projectv1?fileName=“+链接;
}
};
$tbody.append(
"" +
“”+result.regionCode+“”+
“”+result.nationCode+“”+
"" + '"' +
"");
});
$(“#tableGrid”).trigger(“更新”);
}
});
};
您可以像这样更改html附加代码
$tbody.append(
"<tr>" +
"<td>" + result.regionCode + "</td>" +
"<td>" + result.nationCode + "</td>" +
"<td>" + '<a class="customLink" data-url="'+result.link+'">link</a></td>"' +
"</tr>");
您还应该将openLink函数定义移动到外部范围您能给我们展示一些示例“结果吗“数据?你什么时候得到错误?”?当您调用
openLink
时?openLink
函数的代码在哪里?@Tom,我添加了一个示例表来显示结果对不起,我的意思是你能给我们显示实际的对象吗console.log(result)
应该会在控制台中显示它。@laruiss,我在单击链接时收到错误,所以当调用openLink函数时。该函数的代码在每行的附加部分之上。当你说“到外部作用域”时,你的意思是我拥有的openLink函数应该被移动到searchAjax函数之外吗?哇,太神奇了,这解决了我的难题!非常感谢!是的,您不能从searchAjax函数外部调用openLink函数
jQuery(document).on(
{
click: function(e)
{
var url = $(this).data('url');
openLink(url);
}
}
, '.customLink');