Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > оптимизация html


Автор: proger 5.3.2010, 11:16
Здравствуйте,
Вот делаю сайт, там на странице около 100 штук:
Код

<SELECT style="FONT-SIZE: 11px" id=ocenki0-8 
                                class=input 
                                onchange="javascript: check_propuski(this.id); IGNORE_UNLOAD = false;" 
                                size=1 name=ocenki8[]> <OPTION 
                                value=""></OPTION><OPTION 
                                value=1>1</OPTION><OPTION 
                                value=2>2</OPTION><OPTION 
                                value=3>3</OPTION><OPTION selected 
                                value=4>4</OPTION><OPTION 
                                value=5>5</OPTION><OPTION 
                                value=н>н</OPTION><OPTION 
                                value=о>о</OPTION><OPTION style="COLOR: gray" 
                                value=б>б</OPTION><OPTION style="COLOR: gray" 
                                value=у>у</OPTION></SELECT> 

Я вывожу это все циклом, из за этого размер страницы около 1,5 MB как можно оптимизировать?

Автор: LeoK 5.3.2010, 13:13
jquery

Код

$(function(){
$('#ocenki').html('<option....................');
})


если таких селектов много, то укажите для них класс и заносите скриптом оптионсы
я так делал, когда на странице была куча селектов со станциями метро к примеру

Автор: awers 5.3.2010, 21:47
Такое лучше(и надо!) делать на стороне клиента. Едем в раздел по JavaScript...

Автор: IDVsbruck 5.3.2010, 22:57
Угу. Можно делать переменную-объект или массив (JSON), куда занести все значения, скажем, для приведенного кода:
Код

var vals = [{el:"ocenki0-8", ops:[{n:"1", v:"1"}, {n:"2", v:"2"}, {n:"3", v:"3", s:1}, ..., {n:"o", v:"o", c:"grey"}]}, {el:"other_select", ops:[...]}];

И потом заполнение:
Код

for (var i = 0; i < vals.length; i++){
    var el = document.getElementById(vals[i].el);
    for (var j = 0, op; op = vals[i].ops[j]; j++){
        var newop = el.options.add(new Option(op.v, op.n, op.s ? true : false));
        if (op.c) newop.style.color = op.c;
    }
}

Уже давно пересел на jQuery, поэтому простыми ДОМовскими средствами писать немного разучился.

Также можно попробовать перепрофилировать работу страницы на AJAX.

Если речь идет только об оптимизации готовой страницы, то мало что можно сделать. Единственное "по существу" - не ставить закрывающие тэги у <option> - это сэкономит 9 символов на каждый опшн - в среднем 20-33% от всех опшнов.

Автор: proger 6.3.2010, 08:54
Спасибо огромное!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)