Jump to content
  • 0

Раскрывающийся список не работает в Firefox


allmoney.ws
 Share

Question

13 answers to this question

Recommended Posts

  • 0

В этом проблема:

function display(elem) {
if (elem.style.display != "block") {
elem.style.display = "block";
//event.srcElement.innerText = "Ñêðûòü";
}
else {
elem.style.display = "none";
}
return false;
}

Вместо elem.style.display используйте document.getElementById(elem).style.display

Link to comment
Share on other sites

  • 0

Код изменил на

 function display(elem) {
if (document.getElementById(elem).style.display != "block") {
document.getElementById(elem).style.display = "block";
//event.srcElement.innerText = "Скрыть";
}
else {
document.getElementById(elem).style.display = "none";
}
return false;
}

По прежнему не работает в Firefox, и перестало работать в IE :D

Link to comment
Share on other sites

  • 0

Попробуйте вместо установки display:block просто сбрасывать значение display. Вот так ...display = "";

Но чтобы это заработало Вам прид?тся избавиться от класса "address"(или от display в н?м), прописав вместо него style="display:none;". Вообще, по хорошему, изначально надо оставлять вс? видимым, а яваскриптом скрывать. Иначе параноики ничего не увидят. :D

Link to comment
Share on other sites

  • 0
избавиться от класса "address"(или от display в н?м), прописав вместо него style="display:none;".

Не понял, как сделать :)

по хорошему, изначально надо оставлять вс? видимым, а яваскриптом скрывать. Иначе параноики ничего не увидят. :D

А не подскажите, может знаете пример данной реализации, чтобы я подсмотрел? :)

Link to comment
Share on other sites

  • 0

 function display(elem) {
if (document.getElementById(elem).style.display != "") {
document.getElementById(elem).style.display = "";
//event.srcElement.innerText = "Скрыть";
}
else {
document.getElementById(elem).style.display = "none";
}
return false;
}

В коде надо убрать class="address".

А не подскажите, может знаете пример данной реализации, чтобы я подсмотрел? :D

На событи onload вешаете вызов этой функции передавая ей нужные id. Самое простое:

window.onload = function() {
document.getElementById("msk").style.display = "none";
document.getElementById("spb").style.display = "none";
и тд...
}

Link to comment
Share on other sites

  • 0

Отлично, спасибо огромное, вс? работает и в IE, и в Firefox, но теперь при загрузке страницы видно как информация загружается несв?рнутой и сворачивается. Можно ли как-то избавиться от этого эффекта?

Link to comment
Share on other sites

  • 0
Отлично, спасибо огромное, вс? работает и в IE, и в Firefox, но теперь при загрузке страницы видно как информация загружается несв?рнутой и сворачивается. Можно ли как-то избавиться от этого эффекта?

Нет. Однако можно попробовать уменьшить время между е? появлением и выполнением скрипта. Вместо onload ждать появления элемента:

function hide() { 
var msk = document.getElementById("msk");
if (msk != null && msk !== undefined) {
msk.style.display = "none";
}
var spb = document.getElementById("spb");
if (spb != null && spb !== undefined) {
spb.style.display = "none";
}
// и тд...
else { setTimeout(function() { hide(); }, 0); }
}
hide();

Должно работать. :D

Link to comment
Share on other sites

  • 0

При добавлении новых городов приходится добавлять новую строку типа

document.getElementById("city").style.display = "none";

в файл .js

А можно как-то это автоматизировать, чтобы не добавлять идентичные строки? :D

Link to comment
Share on other sites

  • 0

Можно обойти все строки с id:

window.onload = function() {
var trs = document.getElementById("cities").getElementsByTagName('tr');
for (var i = 0; i < trs.length; i++) {
(trs[i].getAttribute('id')) ? trs[i].style.display = "none" : 0;
}
}

Для этого необходимо в родительскую таблицу добавить id(у меня id="cities").

Link to comment
Share on other sites

  • 0
Но чтобы это заработало Вам прид?тся избавиться от класса "address"(или от display в н?м), прописав вместо него style="display:none;".

Спасибо, большое. Про style.display="" уже нарыл в интернете. Но не помогало - тоже было

Если кто знает почему так работает, можете объяснить смысл?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy