JS - 点击未定义?

时间:2013-12-16 05:06:28

标签: javascript jquery google-chrome-extension click contains

我试图编写此功能,点击包含特定文本的链接,唯一的是链接不会导致新页面。我只需要触发一次点击,这样我就可以执行我的下一个功能了。这是我的代码 -

function Clickit() {
var TargetLink = $("a.box:contains('9')")

if (TargetLink.length)
    window.location.href = TargetLink[0].href
    }

这导致无限重新加载,所以我尝试修改它 -

function Clickit() {
var TargetLink = $("a.box:contains('9')")

if (TargetLink.length)
    click().href = TargetLink[0].href
    }

但这会产生一个错误,即未定义点击。我还在学习JS,所以我不太清楚我做错了什么。有什么想法吗?

还有一种更好的方法来编写代码而不使用“$”或“JS”,所以我不必用我的扩展名嵌入jquery库吗?

2 个答案:

答案 0 :(得分:0)

/* Define the function like this: */
function clickIt(text) {
    [].slice.call(document.querySelectorAll('a.box')).some(function(a) {
        if (a.textContent.indexOf(text) !== -1) {
            a.click();
            return true;
        }
        return false;
    });
}

/* Call it like this: */
clickIt('9');

/* Alternatively, you can define the function like this
 * (which uses a more straight-forward syntax to the same effect): */
function clickIt(text) {
    var elems = document.querySelectorAll('a.box');
    for (var i = 0; i < elems.length; i++) {
        var a = elems[i];
        if (a.textContent.indexOf(text) !== -1) {
            a.click();
            break;
        }
    }
}

答案 1 :(得分:0)

错误说明了一切。你没有定义方法click()。如果你试图调用jquery .click()方法,那么你需要一个像

这样的元素引用
$('a.box').click();.

只需编写一个jquery方法,点击&lt; a&gt;有框类,有如下条件,如果条件成立则返回false。

    $(document).ready(function(){
        $('a.box').click(function(){
            //return false if condition holds
            if($(this).text().indexOf('Google') < 0)
                 return false;
            //else default return is true page navigates to respective link
        });
    });

    <a class="box" href="http://www.google.com">Google<a>

如果你不想使用jquery,那么跟随js会做同样的事情。

    function linkClick(link){
        //return false if condition holds
        if(link.innerHTML.indexOf('Google') < 0)
            return false;
        //else default return is true page navigates to respective link
    }

    <a class="box" onclick="return linkClick(this);" href="http://www.google.com">Google<a>