скрипт работает в IE через раз
Здравствуйте всем. Помогите новичку, собрал свой скрипт, и он стабильно работает в PSPad editor, зато в IE - при первом открытии в браузере срабатывает, но уже при повторном открытии этого же файла в этом же браузере - нет. Через несколько попыток открыть/закрыть - снова работает. Но так же не может быть: скрипт или работает или нет, без форума мне не разобраться...
Действие: загружаются картинки, при клике мышкой на малой картинке проявляется большая картинка. Вот сам скрипт: var m = ''; m += '<div style="position : absolute; bottom : 0;">'; m += '<img src="search_tab_3h.gif" id="1" onclick = "doSomething(this, 258, 286)" style="height : 68px;"> '; m += '<img src="search_tab_3h.gif" id="2" onclick = "doSomething(this, 640, 423)" style="height : 68px;"> '; m += '<img src="search_tab_3h.gif" id="4" onclick = "doSomething(this, 3750, 1200)" style="height : 68px;"> '; m += '<\/div><div style="position : absolute; bottom : 90;">'; m += '<img src="bmp.bmp" name = "imgg" id="1a" onclick="doSomething(this)" style="width : 0; height : 0;">'; m += '<img src="17183565f.jpg" name = "imgg" id="2a" onclick="doSomething(this)" style="width : 0; height : 0;">'; m += '<img src="zakat.jpg" name = "imgg" id="4a" onclick="doSomething(this)" style="width : 0; height : 0;">'; m += '<\/div>'; if (document.getElementById) { document.write(m); } var ws; var hs; var nw; var mi = 10; if (typeof (window.innerWidth) === 'number') {ws = window.innerWidth; hs = window.innerHeight; } else if (document.documentElement &&(document.documentElement.clientWidth||document.documentElement.clientHeight)) { ws = document.documentElement.clientWidth; hs=document.documentElement.clientHeight; } else if (document.body&&(document.body.clientWidth||document.body.clientHeight)) { ws = document.body.clientWidth; hs=document.body.clientHeight; } function doSomething(e, w, h) { if (w & h){ if (document.getElementById(e.id+'a').style.width === '0px' || document.getElementById(e.id+'a').style.width === 0) { for ( i = 0; i < document.getElementsByName("imgg").length; i++ ) { document.getElementsByName("imgg").item(i).style.width = 0; document.getElementsByName("imgg").item(i).style.height = 0; } di = e.id + 'a'; if((ws-mi*2)/(hs-mi*10) < w/h) { nw = ws-mi*2; document.getElementById(di).style.width = nw; document.getElementById(di).style.height = Math.round(h*(ws - mi * 2) / w); }else{ nw = Math.round(w * (hs - (mi * 10)) / h); if(document.getElementById(di)){ var ysa = document.getElementById(di); if (ysa){ ysa.style.height = (hs - mi * 10) ? (hs - mi * 10) : 0; ysa.style.width = nw ? nw : 0; } } } document.getElementById(di).style.visibility = "visible"; document.getElementById(di).style.marginLeft = Math.round((ws - nw)/2)-mi ? Math.round((ws - nw)/2)-mi : 0; }else{ document.getElementById(e.id+'a').style.width = 0; document.getElementById(e.id+'a').style.height = 0; } }else{ for ( i=0; i<document.getElementsByName("imgg").length;i++ ) {document.getElementsByName("imgg").item(i).style.width=0; document.getElementsByName("imgg").item(i).style.height = 0; }} } |
В Firefox точно не работает,
а в Chrome скрипт работает, InternetExplorer из 5 одновременно открытых копий 2 работают, 3 нет. И что же в нём тормозит? |
Из-за кучи getElements'ов в циклах. Пихай результат в переменную, а затем используй.
|
Часовой пояс GMT +3, время: 00:25. |