Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从href为表中的多个链接调用javascript函数_Javascript_Href_Location Href - Fatal编程技术网

如何从href为表中的多个链接调用javascript函数

如何从href为表中的多个链接调用javascript函数,javascript,href,location-href,Javascript,Href,Location Href,我有一个表,其中包含一个具有多个文件名的列。文件名实际上是链接,其中一些指向URL,另一些指向本地文件。我可以成功下载一个本地文件,并在单独单击时指向新窗口中的url 但是,当我试图通过href中的js函数动态传递文件名时,我遇到了一个未捕获的语法错误:意外标记:。当我在没有任何参数的情况下调用js函数时,这似乎不是问题,但是,所有链接都指向列中的最后一个文件名。我可以在浏览器的底部看到带有正确文件名的javascript:openLink(filename),但随后发生了错误 这是我的代码:

我有一个表,其中包含一个具有多个文件名的列。文件名实际上是链接,其中一些指向URL,另一些指向本地文件。我可以成功下载一个本地文件,并在单独单击时指向新窗口中的url

但是,当我试图通过
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');