LINUX.ORG.RU

Заменить содержимое div, зная class и содержимое

 , ,


0

0

Дано: динамически генерируемая страница на плюсаче. Люди в кругах представлены элементами вида

<div class="jn Gs">Linus Torvalds</div>
Элементы различаются только текстом между <div…> и </div>.

Требуется: дописать текст в элементе. Например:

The Linus Torvalds

После поисков и консультаций нарисовался код для greasemonkey:

// ==UserScript==
// @name        G+ tags
// @namespace   https://plus.google.com/*
// @description Tag people in circles
// @include     https://plus.google.com/*
// @version     1
// ==/UserScript==


​​var elements = document.getElementsByClassName("jn Gs");
for(i=0;i<=elements.length;i++) {
    content = elements[i].innerHTML;
    switch(content) {
        case "Linus Torvalds" :
            elements[i].innerHTML = "The " + content;
            break;
        default : 
            elements[i].innerHTML = content + " - who?";
    }            
}

Но получился Fig. 1. Кто подскажет, что могло пойти не так?

Или как можно решить задачу с помощью других, желательно простых инструментов типа Stylish?

★★★★
Ответ на: комментарий от mopsene

jn и Gs это два разных класса.

Хорошо, вот такой вариант:

// ==UserScript==
// @name        G+ tags
// @namespace   https://plus.google.com/circles/*
// @description Tag people in circles
// @include     https://plus.google.com/circles/*
// @version     1
// ==/UserScript==

var divs = document.getElementsByTagName('div');
for (var i=0, len=divs.length; i<len; i++){
    var current = divs[i],
        cName = current.className;
    if (cName.indexOf('jn') > -1 && cName.indexOf('Gs') > -1) {
        switch (current.firstChild.nodeValue) {
            case 'Linus Torvalds':
                current.firstChild.nodeValue = 'The ' + current.firstChild.nodeValue;
                break;
        }
    }
}
Тоже фигвам.

Xenesz ★★★★
() автор топика
Ответ на: комментарий от Xenesz

Ты все делаешь неправильно. =)

Я тебе завтра правильный вариант напишу, а то у меня уже 3 часа ночи.

mopsene ★★★
()
Ответ на: комментарий от Kalashnikov

всё могло бы быть

С этого я попытался начать, но не вкурил.

Xenesz ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.