Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Элементарный пример, вопрос от новчика (https://javascript.ru/forum/events/7378-ehlementarnyjj-primer-vopros-ot-novchika.html)

LF-A 29.01.2010 13:25

Элементарный пример, вопрос от новчика
 
Здравствуйте! начал изучение java script и естественно куча вопросов и ничего не понятно) но так пошло что лучше всего языки усваиваются на примерах, поэтому прошу помочь мне разобраться в одном простом примере:


function hideMeFromMenu()
{
    if (window.nav) {
    это если окно nav тоеть навигации я так понимаю? только как он так определяет?
        var elements = geTN((nav[0]?nav[0]:nav),"a");
        эта строчка мне вообще не понятна(( поясните плз
        var space;
        объявляем переменную спейс
        for (i=0;i<=elements.length-1;i++) {
        цикл пошел, i присваиваем 0, и если i тоесть пока 0 меньше или равно длинне символом того непонятного параметра -1; то i становится +1
            space = elements[i].innerHTML.indexOf(" ");
            спейс задаем через иннерхтмл я так пониаю это какая то глобальная функция в яве для изменения страницы дома или типа того, задаем ей пробел тоесть ничего?
            if (space>-1 && space<4 && i>1) elements[i].innerHTML = elements[i].innerHTML.substring(space);
            и если спейс больше -1 и меньше 4 тоесть это как раз получается МОИ я так понимаю и i > 1 то вауля заменяем мои на пробел, так?
        }
    }
}

этот скрипт убирает на сайте вконтакте "Мои" из меню слева, так вот я хочу сделать не что подобное только, чтобы из личных сообщений удалитьк кнопки "Это спам" но у меня ничего не выходит, мне кажется что это не очень трудно для знатаков, но для меня невозможно, если не трудно подскажите как, я быстро врублюсь и выучусь)

function geTN(parent,name){
	if(!parent)return null;
	return parent.getElementsByTagName(name);
это я так понимаю какойто aliase сокрашение для частого приминения?
	
}

Мараторий 29.01.2010 13:37

function hide() {
  // Получаем элемент ol, в котором размещены ссылки. У него id="nav"
  var nav = document.getElementById("nav");

  // Выбираем из него все ссылки
  var links = nav.getElementsByTagName("a");

  // Проходимся по массиву ссылок
  for(var i=0; i< links.length; i++) {
    // Удаляем в каждой ссылке строчку "Мои "
    links[i].innerHTML = links[i].innerHTML.replace("Мои ", "");
  }
}

B@rmaley.e><e 29.01.2010 13:43

function hideMeFromMenu()
{
    if (window.nav) { // если у объекта window (главный объект, в него попадают все глобальные переменные) есть свойство nav
        var elements = geTN((nav[0]?nav[0]:nav),"a"); /* вызываем ф-ию geTN, передаем ей аргументом первый элемент массива nav, если nav — массив. Иначе передаем саму nav */
        var space; // объявление переменной space без присвоения значения
        for (i=0;i<=elements.length-1;i++) { /*арифметический цикл. начальное значение переменной-счетчика 0, конечное — количество элементов -1. После каждой итерации значение счетчика будет увеличено на 1.*/
            space = elements[i].innerHTML.indexOf(" "); // в space записываем позицию первого вхождения пробела в содержание i-того элемента
            if (space>-1 && space<4 && i>1) elements[i].innerHTML = elements[i].innerHTML.substring(space); // если пробел содержится в строке и его позиция меньше 4 и это не первые 2 тега, то вырезаем из строки все, что находится до 1 пробела
        }
    }
}

function geTN(parent,name){ /*функция возвращает все элементы определенного тега name, находящиеся внутри тега parent*/
	if(!parent)return null;
	return parent.getElementsByTagName(name);	
}


Написано кривовато. У цикла, как минимум, 2 лишние итерации, условие проще было задать как i<elements.length, счетчик цикла становится глобальной переменной.

LF-A 29.01.2010 14:23

Цитата:

Сообщение от Мараторий (Сообщение 42642)
function hide() {
  // Получаем элемент ol, в котором размещены ссылки. У него id="nav"
  var nav = document.getElementById("nav");

  // Выбираем из него все ссылки
  var links = nav.getElementsByTagName("a");

  // Проходимся по массиву ссылок
  for(var i=0; i< links.length; i++) {
    // Удаляем в каждой ссылке строчку "Мои "
    links[i].innerHTML = links[i].innerHTML.replace("Мои ", "");
  }
}

Громадное спасибо, это даст мне старт для дальнейшего разбирательства)


Часовой пояс GMT +3, время: 07:45.