2013-12-16 47 views
0

我试图编写这个功能,点击一个包含特定文本的链接,唯一的是链接不会导致一个新的页面。我只需要触发点击,以便我可以执行我的下一个功能正常工作。这里是我的代码 -JS - 单击未定义?

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库与我的扩展?

+0

你记录了你的TargetLink并试图找出它的'undefined'或其他东西吗?在if条件之前添加'console.log(TargetLink.length)'和'console.log(TargetLink [0] .href)'并检查。 –

+0

console.log(TargetLink.length) - 在控制台中显示“1” – user3089477

+0

然后出现'TargetLink [0] .href'错误。尝试用'window.location.href ='http://www.google.com';'替换。这应该带你到谷歌。什么是'console.log(TargetLink [0] .href)'给你? –

回答

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; 
     } 
    } 
} 
+0

哦,这个人是男人..........真棒 – user3089477

+0

@ user3089477:总是很高兴帮助 ! (顺便说一下,真棒答案也可以upvoted(这是答案左侧的小向上箭头):)) – gkalpak

0

错误说明了一切。你还没有定义方法click()。如果你试图调用jQuery的。点击()方法,那么你需要为类似

$('a.box').click();. 

元素引用只写被触发的<点击>有框类jquery的方法,有作为的条件如果条件成立,则返回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> 
+0

在锚元素上的克服可以做的不仅仅是这些天改变'window.location.href'。如果你想模拟点击一个锚点元素,使用它的'click()'方法。请注意,问题不在于设置onclick行为,而是通过编程方式触发“点击”。 – gkalpak