Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Что делается с переменной (https://javascript.ru/forum/misc/18673-chto-delaetsya-s-peremennojj.html)

luda2012 11.07.2011 02:49

Что делается с переменной
 
Приветствую всех... Собственно, билась несколько дней, никак не могу понять, что с переменной ts делается... Подскажите пожалуйста...
Значение "i" до преобразования было равно 144410 , а потом стало 145431
function tn52cd65() {
    var n = document.getElementsByTagName("a");
    var re = new RegExp("(^| )new( |$)");
    var tmp = [];
    for (var i = 0, len = n.length; i < len; i++) if (!(re.test(n[i].className))) tmp.push(n[i]);
    n = tmp;
    for (i = 0, j = 0; i < n.length; i++) {
        var p = n[i].href.indexOf("ytuy784");
        var h = p > 10 ? n[i].href.substring(0, p) : n[i].href;
        n[i].href = h + "ytuy784" + h.substring(h.indexOf("&ts=") + 11);
    }
}
function tn41eea5(ts) {
    var c = [380, 448, -134, 383, 122, 341];
    for (var i = 0; i < ts.length; i++) ts[i]["i"] = parseInt(ts[i]["i"]) + 573 + c[i];
    setTimeout("tn52cd65()", 500);
    return ts;
}
function tnc123d3(ts) {
    var un = [6];
    for (var i = un.length - 1; i >= 0; i--) ts.splice(parseInt(un[i]), 1);
    var nt = [];
    for (var i = 0; i < ts.length; i++) if (ts[i]["i"]) nt[nt.length] = ts[i];
    return nt;
}

Sweet 11.07.2011 10:13

Цитата:

Сообщение от luda2012
что с переменной ts делается

Есть несколько переменных ts.
Цитата:

Сообщение от luda2012
Значение "i" до преобразования было равно 144410 , а потом стало 145431

Какой "i"? Во всех функциях есть i (в основном по несколько раз используются).
Короче, локализуй как-то проблему. Или ты хочешь, чтобы и мы несколько дней над ней бились?
Кстати, так:
setTimeout("tn52cd65()", 500);
делают только лошары! Нужно так:
setTimeout(tn52cd65, 500);

ILL-JAH 11.07.2011 10:23

Цитата:

Сообщение от Sweet
Есть несколько переменных ts.

Я думаю из функции tn41eea5, ибо функция tnc123d3 нигде не вызывается.

luda2012 12.07.2011 03:27

Я тоже так думаю, вот какая функция главная :)
Код:

function tn41eea5(ts) {
    var c = [380, 448, -134, 383, 122, 341];
    for (var i = 0; i < ts.length; i++) ts[i]["i"] = parseInt(ts[i]["i"]) + 573 + c[i];
    setTimeout("tn52cd65()", 250);
    return ts;
}

Сейчас постараюсь доказать, почему...
Вот, в чем дело... Начальное значение было 144410... Затем, смотрю в эту строку
Код:

parseInt(ts[i]["i"]) + 573 + c[i]
К нему прибавили 573, получили 144983, а исходным должно быть 145431, т.е. не хватает 448, которое у нас как раз и есть в массиве...
Вопрос, над этим надо подумать...
Код:

+c[i]
... почему берется именно 448, в других вариантах это может быть другое число, но обязательно из этого массива
Код:

[380, 448, -134, 383, 122, 341]
Может есть у кого нибудь идеи, буду рада любым комментариям :)
С синтаксисом javascript плохо знакома, хотя вроде аналогия есть с си/си++

Sundro 12.07.2011 18:30

А что значит вот эта запись в приведенной функции ts[ i ] [ " i " ], я понимаю что многомерный массив но получается что в каждый элемент массива ts [ i ] записывается массив с одним элементом состоящий из строки " i ". Тем более мне не понятно как ts[ i ] [" i "] преобразовать в число. Еще вопрос про с [ i ], в этом массиве шесть элементов а поскольку изначально ts был равен 144410 то и i будет изменяться от 0 до 14449 получается что когда i будет больше 5 то вместо числа будет прибавляться пустая строка,зачем ? PS Сильно не ругайте просто не мог не полюбопытствовать.

person 13.07.2011 07:07

Цитата:

setTimeout("tn52cd65()", 500);

делают только лошары! Нужно так:setTimeout(tn52cd65, 500);
Профессор Sweet, а в чем разница, и как параметры передавать?

monolithed 13.07.2011 08:25

Цитата:

Сообщение от person
Профессор Sweet, а в чем разница, и как параметры передавать?

происходит
перед тем как происходит вызов tn52cd65(), неявно вызывается eval().
Cхематично это выглядит примерно так:
string 'tn52cd65()' -> eval('n52cd65()') -> n52cd65();

Kolyaj 13.07.2011 08:32

Цитата:

Сообщение от person
в чем разница, и как параметры передавать?

http://alljs.ru/articles/timeout/overview

person 14.07.2011 05:55

Спасибо парни.

luda2012 20.07.2011 02:43

Парни, вы издеваетесь? Может кто - нибудь обьяснить, что делает вот этот код?
function tn881e2a(ts) {
    var c = [-198, 195, 340, -347, 388, -147];
    for (var i = 0; i < ts.length; i++) ts[i]["i"] = parseInt(ts[i]["i"]) + 600 + c[i];
    setTimeout("tneb2489()", 250);
    return ts;
}
function tn99b0ae(ts) {
    var un = [0, 4, 5, 6, 7, 11];
    for (var i = un.length - 1; i >= 0; i--) ts.splice(parseInt(un[i]), 1);
    var nt = [];
    for (var i = 0; i < ts.length; i++) if (ts[i]["i"]) nt[nt.length] = ts[i];
    return nt;
}

monolithed 20.07.2011 13:15

Цитата:

Сообщение от luda2012
Парни, вы издеваетесь?

а похоже?
Цитата:

Сообщение от luda2012
Может кто - нибудь обьяснить, что делает вот этот код?

ничего он не делает, т.к. не рабочий

Sweet 20.07.2011 13:46

Цитата:

Сообщение от person
в чем разница

Во-первых, это так же глупо, как и обращаться к свойству через eval:
eval("object." + x)//вместо object[ x ]

Во-вторых, могут возникнуть проблемы, описанные мной в статье.

luda2012 22.07.2011 11:25

Вот именно, похоже...
А что он должен делать, мог бы делать? Не могу провести аналогию с C++/С#, вот в чем беда...

Kolyaj 22.07.2011 11:40

Беда в том, что вы пытаетесь провести аналогию. В большинстве случаев это невозможно, языки слишком разные.

luda2012 23.07.2011 11:23

Синтаксис то вроде немного схож с синтаксисом C
Парни, ну хоть кто нить, подскажите, что должен/мог бы делать данный кусок кода, вопрос жизни и смерти (как девственности лишаюсь второй раз, ей-богу)


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