JS - Нажмите не определено?

0

Я пытаюсь написать эту функцию, которая нажимает на ссылку, содержащую конкретный текст, единственное, что ссылка не приводит к новой странице. Мне просто нужно вызвать щелчок, чтобы я мог выполнить свою следующую функцию, которая работает нормально. Здесь мой код -

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 или что-то? Добавьте console.log(TargetLink.length) и console.log(TargetLink[0].href) перед условием if и проверьте.
  • 0
    console.log (TargetLink.length) - показывает «1» в консоли
Показать ещё 2 комментария
Теги:
contains
click
google-chrome-extension

2 ответа

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
    о человеке этот парень .......... УДИВИТЕЛЬНЫЙ
  • 0
    @ user3089477: Всегда рад помочь! (Кстати, за удивительные ответы также можно проголосовать (это маленькая стрелка вверх слева от ответа) :))
0

Ошибка говорит все. вы не определили метод 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>
  • 0
    Нажатие на элемент привязки может сделать гораздо больше, чем просто изменить window.location.href наши дни. Если вы хотите , чтобы имитировать нажатия на элемент якоря, используйте его click() метод. Обратите внимание, что вопрос не в настройке поведения при нажатии, а в программном инициировании «щелчка».

Ещё вопросы

Сообщество Overcoder
Наверх
Меню