Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
Javascript JS-点击未定义?_Javascript_Jquery_Google Chrome Extension_Click_Contains - Fatal编程技术网

Javascript JS-点击未定义?

Javascript JS-点击未定义?,javascript,jquery,google-chrome-extension,click,contains,Javascript,Jquery,Google Chrome Extension,Click,Contains,我试图写这个函数,点击一个包含特定文本的链接,唯一的事情是链接不会导致一个新的页面。我只需要触发一个点击,这样我就可以执行我的下一个功能,它工作得很好。这是我的密码- function Clickit() { var TargetLink = $("a.box:contains('9')") if (TargetLink.length) window.location.href = TargetLink[0].href } 这会导致无限的重新加载,所以我尝试这样修改它- fu

我试图写这个函数,点击一个包含特定文本的链接,唯一的事情是链接不会导致一个新的页面。我只需要触发一个点击,这样我就可以执行我的下一个功能,它工作得很好。这是我的密码-

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库了

/* 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');

错误说明一切。您尚未定义单击方法。如果您试图调用jquery.click方法,那么您需要一个元素引用

$('a.box').click();.
只需编写一个jquery方法,该方法在单击having box类时触发,条件如下,如果条件成立,则返回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>

你是否记录了你的TargetLink并试图找出它是未定义的还是什么?在if条件之前添加console.logTargetLink.length和console.logTargetLink[0].href,并选中.console.logTargetLink.length-在控制台中显示1 TargetLink[0]有问题。href。尝试替换为window.location.href=http://www.google.com';. 这应该带你去谷歌。什么是console.logTargetLink[0]。href给您提供了什么?console.logTargetLink[0]。href显示控制台上的空白。不过,我不希望该链接将我带到一个新页面,我只希望它单击带有指定文本的标记,在锚元素上单击可以做的不仅仅是更改window.location.href。如果要模拟在锚元素上单击,请使用其单击方法。请注意,问题不是关于设置onclick行为,而是通过编程触发“单击”。@user3089477:非常乐意提供帮助!顺便说一句,很棒的答案也可以向上投票。答案左边的小向上箭头是:
    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>