2013-12-16 69 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