如何在每个循环内的 onclick 中使用 window.open

Posted

技术标签:

【中文标题】如何在每个循环内的 onclick 中使用 window.open【英文标题】:How to use window.open in onclick inside each loop 【发布时间】:2019-08-11 02:10:54 【问题描述】:

我正在尝试在 PhoneGap 应用中显示页面内容。 这很好用:

<a href="#" onclick="window.open('https://www.google.com', '_self ', 'location=yes');">google.com</a>

当我点击链接时,谷歌会在应用程序中加载。

我正在使用 WordPress Rest API 停用帖子数据。 为此,我正在使用这个:

getPosts: function() 

        var rootURL = 'https://example.com/wp-json/wp/v2/posts/';

        $.ajax(
            type: 'GET',
            url: rootURL,
            dataType: 'json',
            success: function(data)

                $.each(data, function(index, value) 
                    console.log(value.featured_image);
                  $('ul.homepost-list').append('<li class="homepost-list__item">' +
                    '<a href="'+value.link+'">'+
                    '<img   src="'+value.fimg_url+'" />'+
                    '<h3>'+value.title.rendered+'</h3>' +
                    '<p>'+value.excerpt.rendered+'</p>'+
                    '</a>'+
                    '</li>');
                    ;
                );
            ,
            error: function(error)
                console.log(error);
            

        );

    

但是当点击帖子时,它会在浏览器中打开。 要在应用程序中打开它,我必须像这样使用 onclick 函数:&lt;a href="#" onclick="window.open('https://www.google.com', '_self ', 'location=yes');"&gt;google.com&lt;/a&gt;

所以我改成了这样:

getPosts: function() 

        var rootURL = 'https://example.com/wp-json/wp/v2/posts/';

        $.ajax(
            type: 'GET',
            url: rootURL,
            dataType: 'json',
            success: function(data)

                $.each(data, function(index, value) 
                    console.log(value.featured_image);
                  $('ul.homepost-list').append('<li class="homepost-list__item">' +
                    '<a href="#" onclick="'+window.open(''+value.link+'', '_self ', 'location=yes')+'">'+
                    '<img   src="'+value.fimg_url+'" />'+
                    '<h3>'+value.title.rendered+'</h3>' +
                    '<p>'+value.excerpt.rendered+'</p>'+
                    '</a>'+
                    '</li>');
                    ;
                );
            ,
            error: function(error)
                console.log(error);
            

        );

    

但是现在锚点的点击值是NULL onclik null

我认为这是因为这一行有一个语法错误'&lt;a href="#" onclick="'+window.open(''+value.link+'', '_self ', 'location=yes')+'"&gt;'+

如何更改此语法行才能使其正常工作? 这只是我知道的一个简单的语法错误,但我无法弄清楚。

【问题讨论】:

【参考方案1】:

你需要转义你的单引号

window.open(\'+value.link+'\'

【讨论】:

【参考方案2】:

您需要研究如何添加字符串和变量以及单引号和双引号。在这里查看小提琴https://jsfiddle.net/designtocode/u3o57jr2/3/

onclick="'+window.open(''+value.link+'', '_self ', 'location=yes')+'">'+

需要:

onclick="window.open(\''+value.link+'\', \'_self \', \'location=yes\')">

这意味着onclickwindow.open 需要作为字符串传递,value.link 需要是一个变量。由于我们使用单引号来转义 javascript 代码,如果您需要将其作为字符串,我们需要在单引号之前添加 \

我希望这是有道理的,并且将来会对您有所帮助。

【讨论】:

非常感谢。你能从小提琴中删除我的网站链接吗?您可以使用其他一些公共站点供稿。这将影响搜索引擎优化。 :D

以上是关于如何在每个循环内的 onclick 中使用 window.open的主要内容,如果未能解决你的问题,请参考以下文章

使用媒体播放器或声音池在片段内的 onClick 中播放声音

如何在主异步循环内的同步子进程内运行多个异步循环?

如何在 onClick 处理程序内的 JavaScript 代码中转义字符串?

如何在 onClick 处理程序内的 JavaScript 代码中转义字符串?

如何避免循环内的数据丢失

如何对循环内的按钮使用相同的功能?