Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Подскажите как заставить искать getElementById в любом регистре ? (https://javascript.ru/forum/events/21682-podskazhite-kak-zastavit-iskat-getelementbyid-v-lyubom-registre.html)

melky 20.09.2011 17:24

точно, про это ещё забыл.

сейчас поправлю то, что сверху

Триви 20.09.2011 18:13

А регексп чо реально быстрее, чем встроенный toLowerCase ? :blink:

melky 20.09.2011 22:25

сначалa сравнивать в lowercase, а потом в uppercase?

with-love-from-siberia 20.09.2011 23:27

nikita.mmf,
melky,

А почему бы не хранить данные в самой функции?

function getElementById_(id)
{
    var el = document.getElementById(id);

    if ( el ) {
        return el;
    }

    var all = arguments.callee.all = arguments.callee.all || document.getElementsByTagName("*");

    var lowId = String(id).toLowerCase();
    var i = 0;
    while ( all[i] && all[i].toLowerCase() != lowId ) {
        i++;
    }
    return all[i] || null;
};

Триви 21.09.2011 00:10

Цитата:

Сообщение от Триви (Сообщение 127364)
А регексп чо реально быстрее, чем встроенный toLowerCase ? :blink:

Цитата:

Сообщение от melky (Сообщение 127428)
сначалa сравнивать в lowercase, а потом в uppercase?

Цитата:

Сообщение от with-love-from-siberia (Сообщение 127439)
var lowId = String(id).toLowerCase();
    var i = 0;
    while ( all[i] && all[i].toLowerCase() != lowId ) {
        i++;
    }

типо того..
если уж инкремента бояться, то имеет смысл сделать тесты производительности :D

пи.си.1:
кстати, ребята, научите как мерить скорость выполнения javascript?
хочу прямо со старта стать параноиком! :D

пи.си.2:
Хоспидя, какая же чушь.. регистронезависимый id это ж просто й@бу даться! :D

with-love-from-siberia 21.09.2011 02:13

Цитата:

Сообщение от Триви
как мерить скорость выполнения javascript?

Никак. Вы можете оценить только среднее время исполнения всего скрипта или его части. Как обычно - запоминаете текущее время перед заданным фрагментом и после. Разница этих двух величин и будет искомым временем. Так как на эту величину влияют разные внешние факторы, например, загруженность процессора, то делают несколько замеров и усредняют.

Код:

var t1 = (new Date()).getTime();
// что-то большое и громоздкое, например цикл
var t2 = (new Date()).getTime();
alert(t2 - t1);

var t1 = (new Date()).getTime();
for (var i = 0; i < n; i++) {
    // что-то небольшое и быстрое
}
var t2 = (new Date()).getTime();
alert((t2 - t1) / n);

А вообще-то вопрос не по теме.

Триви 21.09.2011 12:37

А, ясно.. как и везде.. я грешным делом подумал, может чего нового придумали))

пи.си. сорри за оффтоп :thanks:

yu_v_b 03.03.2012 05:01

...как заставить искать getElementById
 
В общем так...
ищи в скрипте буковку g, ну например: ....-document.body.innerHTML.replace(eval("/"+textToFind+"/g") и при этом, естественно имеется строчки = var obj = window.document.getElementById(inputId);
= var textToFind;.... ,естественно с твоими поправками. Если обнаружил g, то рядом с ней поставь i . И твой скрипт будет искать любое соответствие независимо от регистра. Удачи.


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