Написание моего первого скрипта «Обезжиренная обезьяна».Как я могу получить innerHTML для использования «содержит»? - PullRequest
0 голосов
/ 22 июня 2011

Я основываюсь на другом сценарии, так как, хотя я немного знаком с javascript, я все еще учусь.

// ==UserScript==
// @name           click all "load more" prompts
// @namespace      none
// @include        http://www.reddit.com/*
// ==/UserScript==

setTimeout('var deleted = 0;var links = document.getElementsByTagName("a");var i = 0;var d = 0;for (i = 0; i < links.length; i++) {var l = links[i];if (l.href) {if (l.innerHTML == "load more comments") {toggle(l);   d = 1;  } } } , 4000);

Теперь, похоже, проблема в том, что ни один из innerHTM простоговорит «загрузить больше комментариев».

Вместо этого он говорит что-то вроде «загрузить больше комментариев (x ответов)», где x может быть любым числом.

Существует ли простой способ проверить ипосмотреть, содержит ли innerHTML термин «загрузить больше комментариев» вместо проверки на точную эквивалентность?

Вот страница со ссылками «загрузить больше комментариев», на которые я ссылаюсь: http://www.reddit.com/r/AskReddit/comments/g4c8a/whats_the_funniest_thing_you_have_heard_that_you/

Редактировать:

Вот обновленный скрипт.Кажется, не работает, какой-либо совет?

links = document.getElementsByTagName("a");
var i = 0;
for (i = 0; i < links.length; i++){
    var l = links[i];
    if (l.href){
        if (l.innerHTML.indexOf("load more comments") > -1) {
            toggle(l);
        }
    }
}

1 Ответ

0 голосов
/ 22 июня 2011

Поскольку это JavaScript, а innerHTML - строка, вы можете просто использовать для этого строковый метод JS.Традиционный способ - indexOf

if(l.innerHTML.indexOf("load more comments") > -1){
   // substring found
}

Менее традиционно вы можете использовать регулярные выражения или другие методы.

Я рекомендую просмотреть строковую документацию Mozilla для получения подробной информации.

РЕДАКТИРОВАТЬ: Это выглядит хорошо.Тем не менее, я также рекомендую вам не делать то, что вы делаете, как вы это делаете.Делать что-либо в JavaScript без использования библиотеки JS, такой как jQuery , до смешного больно, даже если это что-то простое.

setTimeout(function(){
    $('a').each(function(i){
        if(this.href && this.innerHTML.indexOf('load more comments') > -1){
            toggle(this);
        }
    });
}, 4000);

Изучайте jQuery, позже вы будете благодарны.

...