Я пытаюсь написать эту функцию, которая нажимает на ссылку, содержащую конкретный текст, единственное, что ссылка не приводит к новой странице. Мне просто нужно вызвать щелчок, чтобы я мог выполнить свою следующую функцию, которая работает нормально. Здесь мой код -
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');
/* 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;
}
}
}
Ошибка говорит все. вы не определили метод click(). Если вы пытаетесь вызвать метод jquery.click(), вам нужна ссылка на элемент для чего-то вроде
$('a.box').click();.
Просто напишите метод jquery, который запускается при щелчке <a> с классом ящиков, имеет условие, как показано ниже, и возвращает 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>
window.location.href
наши дни. Если вы хотите , чтобы имитировать нажатия на элемент якоря, используйте его click()
метод. Обратите внимание, что вопрос не в настройке поведения при нажатии, а в программном инициировании «щелчка».
undefined
или что-то? Добавьтеconsole.log(TargetLink.length)
иconsole.log(TargetLink[0].href)
перед условиемif
и проверьте.