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