Вход

Просмотр полной версии : Что делается с переменной


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
что с переменной ts делается
Есть несколько переменных ts.
Значение "i" до преобразования было равно 144410 , а потом стало 145431
Какой "i"? Во всех функциях есть i (в основном по несколько раз используются).
Короче, локализуй как-то проблему. Или ты хочешь, чтобы и мы несколько дней над ней бились?
Кстати, так:setTimeout("tn52cd65()", 500);делают только лошары! Нужно так:setTimeout(tn52cd65, 500);

ILL-JAH
11.07.2011, 10:23
Есть несколько переменных 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
Профессор Sweet, а в чем разница, и как параметры передавать?
происходит
перед тем как происходит вызов tn52cd65(), неявно вызывается eval().
Cхематично это выглядит примерно так:
string 'tn52cd65()' -> eval('n52cd65()') -> n52cd65();

Kolyaj
13.07.2011, 08:32
в чем разница, и как параметры передавать?
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
Парни, вы издеваетесь?
а похоже?
Может кто - нибудь обьяснить, что делает вот этот код?
ничего он не делает, т.к. не рабочий

Sweet
20.07.2011, 13:46
в чем разница
Во-первых, это так же глупо, как и обращаться к свойству через eval:
eval("object." + x)//вместо object[ x ]
Во-вторых, могут возникнуть проблемы, описанные мной в статье (http://javascript.ru/blog/Sweet/Zlo-skrytoe-setTimeoutsetInterval).

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

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

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