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

How to use window.open in onclick inside each loop

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

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

当我点击 link 时,google 被加载到应用程序中。

我正在使用 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 width="100" height="75" src="'+value.fimg_url+'" alt="'+value.title.rendered+'"/>'+
                    '<h3>'+value.title.rendered+'</h3>' +
                    '<p>'+value.excerpt.rendered+'</p>'+
                    '</a>'+
                    '</li>');
                    ;
                });
            },
            error: function(error){
                console.log(error);
            }

        });

    }

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

所以我变成了这样:

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 width="100" height="75" src="'+value.fimg_url+'" alt="'+value.title.rendered+'"/>'+
                    '<h3>'+value.title.rendered+'</h3>' +
                    '<p>'+value.excerpt.rendered+'</p>'+
                    '</a>'+
                    '</li>');
                    ;
                });
            },
            error: function(error){
                console.log(error);
            }

        });

    }

但是现在锚点的onclick值为NULLonclik null

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

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

你需要转义你的单引号

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

您需要研究如何添加字符串和变量以及单引号和双引号。请参阅 fiddle 此处 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 代码,如果您需要它作为字符串,我们需要在单引号前添加 \

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