Страницы: 1
Вставили в сайт Динамически заполняющийся список, в Эксплорере работает безупречно а в Mazilla,Opere,Netscape встаёт колом. Времени разбираться уже нет . Может кому знакомо решение проблемы ? Ключевые места проблемы указаны в коде.Видимо Visibility="hidden". Буду благодарен.
<html>
<head>
<style>
#sub1, #sub2, #sub
{ position: absolute;visibility: hidden;
z-index: 3
}
</style>
<SCRIPT LANGUAGE="JavaScript">
catnumber = 3
offset = 150
performOnchange = false
if (document.all) {
docObj = "document.all."
styleObj = ".style"
} else {
docObj = "document."
styleObj = ""
}
function openselect(subcat) {
popupselect = eval(docObj + subcat + styleObj)
popupselect.visibility = "visible"
}
function closeselect(submenu,subcat){
popupselect = eval(docObj + subcat + styleObj)
if (submenu.selectedIndex != 0) {
numchoice = submenu.selectedIndex
choice = submenu[numchoice].value
subform.otkuda.value = choice //********* tchto to ne tak
}
}
function closeselect1(submenu,subcat){
popupselect = eval(docObj + subcat + styleObj)
if (submenu.selectedIndex != 0) {
numchoice = submenu.selectedIndex
choice = submenu[numchoice].value
subform.kuda.value = choice //********* tchto to ne tak
}
}
function lock() {
performOnchange = false
}
function unlock() {
performOnchange = true
}
function selectSub(cat) {
for (i=1; i <= catnumber; i++) {
subcat = "sub" + i
popupselect = eval(docObj + subcat + styleObj)
popupselect.visibility = "hidden" //*problemi s- popupselect
}
if (performOnchange == true) {
letsopen = "sub" + cat.selectedIndex
if (letsopen == "sub0") {
alert("No category selected")
choice = "- subcategory -"
subcategory.value = choice
cat.focus()
} else {
openselect(letsopen)
lock()
}
}
}
function selectSub1(cat) {
for (i=1; i <= catnumber; i++) {
subcat = "subq" + i
popupselect = eval(docObj + subcat + styleObj)
popupselect.visibility = "hidden"
}
if (performOnchange == true) {
letsopen = "subq" + cat.selectedIndex
if (letsopen == "subq0") {
alert("No category selected")
choice = "- subcategory -"
subcategory.value = choice
cat.focus()
} else {
openselect(letsopen)
lock()
}
}
}
// ***************Script End ************
</script>
</head>
<table><tr>
<body>
<form METHOD="POST" ACTION="zakaz.php" name="subform">
<div>
<table border="0" width="100%">
<tr>
<td width="100%">
<table border="0" width="70%" cellspacing="5">
<tr>
</tr>
<tr><td width="51%" align="center">
<p align="left"><font face="Verdana,Tahoma,Arial" color="#000000" size="2"><b>Region</b></font></p>
</td></tr>
<tr>
<td width="50%">
<select name="categoria" Value="1" style="{border: inset 1px; background: #EEEEEE;}" onmouseover="unlock()"
onchange="selectSub(this)">
<option selected value="">Vibrat region
<option value="announce">Mosk.obl
<option value="arts">Novg.obl
<option value="software">Leningr.obl
</select>
<br>
</td></tr>
<tr><td width="51%">
<span id="sub1">
<select name="sub" Value="1" style="{border: inset 1px; background: #EEEEEE;}" onchange="closeselect(this,'sub1')">
<option selected value="">gorod
<option value="Moskva">Moskva</option>
<option value="Mitishi">Mitishi</option>
<option value="Tver">Tver</option>
</select>
</span>
<span id="sub2">
<select name="sub" Value="1" style="{border: inset 1px; background: #EEEEEE;}" onchange="closeselect(this,'sub2')">
<option selected value="">gorod
<option value="Novgorod">Novgorod</option>
<option value="Gorodok">Gorodok</option>
<option value="Stancia">Stancia</option>
</select>
</span>
<span id="sub3">
<select name="sub" Value="1" style="{border: inset 1px; background: #EEEEEE;}" onchange="closeselect(this,'sub3')">
<option selected value="">gorod
<option value="Piter">Piter</option>
<option value="Lodeika">Lodeika</option>
<option value="Viborg">Viborg</option>
</select>
</span>
</td></tr>
</div>
</table>
<input type="submit" value=" OK " style="cursor:pointer;" class="but">
</form>
</body>
</html>
Отсутствует
...Ключевые места проблемы указаны в коде.Видимо Visibility="hidden"...
И не там указаны, и не "hidden". Вот где ключевое место:
Исправьте так:
и будет работать.
"З.Ы.":
...
...
subform.otkuda.value = choice //********* tchto to ne tak
...
subform.kuda.value = choice //********* tchto to ne tak
...
а эти строчки даже в IE не работают: "subform.otkuda есть null или не является объектом".
Отредактировано Anton (12-05-2006 21:57:18)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Исправьте так:
и будет работать.
Работает---, но посмотрел в яву консоль_ там пишет ошибку : subform.otkuda has no properties , и требует использовать запрос document.getElementById() по стандарту W3C. Может подскажите как этот запрос правильно вписать? Заранее спасибо.
Отсутствует
: subform.otkuda has no properties -- Извините , перенапряжение ведёт к невнимательности.
, и требует использовать запрос document.getElementById() по стандарту W3C.- А вот как это не понятно.
Отсутствует
Сам в Netscape не пробовал по причине его отсутствия, учитывая технику исполнения проблемы должны были быть.
На сайте http://javascript.internet.com/forms/ есть много интересных скриптов которые не везде работают по причине их древности.
Отсутствует
по причине их древности.
Я по причине своей относительной недревности предпочитаю нужные скрипты писать сам. Как крайняя мера - просмотреть тщательно весь код. Потом в случае чего хочется руки оторвать уже только себе.
Кстати, интересная мысль. Сделать скриптик Online Elderness Analyzer, который проверял бы скрипты на наличие интересных конктрукций типа document.all. Подумаю.
Отсутствует
...
...который проверял бы скрипты на наличие интересных конктрукций типа document.all. Подумаю.
А у меня в FF document.all. работает... Я определённо чего-то не понимаю.
и даже скрипт из первого сообщения в теме работает, если заменить альтернативу
if (document.all) { docObj = "document.all." styleObj = ".style" } else { docObj = "document." styleObj = "" }
простым присваиванием
Отредактировано Anton (13-05-2006 14:57:05)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
А у меня в FF document.all. работает... Я определённо чего-то не понимаю.
И у меня работает, но если заглянуть в Tools -> JavaScript консоль, там можно найти интересный список всякого рода жалоб и предупреждений(если скрипт сделан коряво).
Отсутствует
Господа! Добились что скрипт работает на 100% в Мадзилле и не адекватно в IE, вначале было на оборот.
Если доработать скрипт так чтобы он в зависимости от того где он выполняется в М или IE выбирал нужную команду
subform.otkuda.value = choice //для IE
или
document.getElementById('otkuda').value = choice // для Мадзиллы
Отсутствует
Anton
А у меня в FF document.all. работает... Я определённо чего-то не понимаю.
Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.
Отсутствует
Yan
Кстати, if (document.all) возвращает false.
Разумеется. Bug 248549 - Add undetected document.all support
https://bugzilla.mozilla.org/show_bug.cgi?id=248549#c9
> If Mozilla were to add support for document.all, it would make it very hard
> (if not impossible) to distinguish it from other browsers.The _entire point_ of this bug is that the supported would be undetectable. In
other words,if (document.all) { ... }
...would _not_ catch Mozilla.
Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.
Отсутствует
Чтобы не мучились, здесь рабочий скрипт, но работает или в FF или в IE, нехватает только руководителя который рулил бы в зависимости от броузера. Да ещё теряет переменную "откуда" , а переменная sub уходит как и надо до страницы test.php
<SCRIPT LANGUAGE="JavaScript">
catnumber = 3
offset = 150
performOnchange = false
if (document.all) {
docObj = "document.all."
styleObj = ".style"
} else {
docObj = "document."
styleObj = ""
}
function openselect(subcat) {
popupselect = eval("document.getElementById('"+subcat+"').style")
popupselect.visibility = "visible"
}
function closeselect(submenu,subcat){
popupselect = eval("document.getElementById('"+subcat+"').style")
if (submenu.selectedIndex != 0) {
numchoice = submenu.selectedIndex
choice = submenu[numchoice].value
document.getElementById('otkuda').value = choice //********* tдля FF
//subform.otkuda.value = choice //**************************************для IE
}
}
function lock() {
performOnchange = false
}
function unlock() {
performOnchange = true
}
function selectSub(cat) {
for (i=1; i <= catnumber; i++) {
subcat = "sub" + i
//popupselect = eval(docObj + subcat + styleObj);
popupselect = eval("document.getElementById('"+subcat+"').style")
popupselect.visibility = "hidden"
}
if (performOnchange == true) {
letsopen = "sub" + cat.selectedIndex
if (letsopen == "sub0") {
alert("No category selected")
choice = "- subcategory -"
subcategory.value = choice
cat.focus()
} else {
openselect(letsopen)
lock()
}
}
}
// *************** End ************
</script>
<style>
#sub, #sub1, #sub2
{ position: absolute;visibility: hidden;
z-index: 3
}
</style>
<table><tr>
<form METHOD="POST" ACTION="test.php" name="subform">
<div>
<table border="0" width="100%">
<tr>
<td width="100%">
<table border="0" width="70%" cellspacing="5">
<tr>
</tr>
<tr><td width="51%" align="center">
<p align="left"><font face="Verdana,Tahoma,Arial" color="#000000" size="2"><b>Region</b></font></p>
</td></tr>
<tr>
<td width="50%">
<select name="otkuda" Value="1" style="{border: inset 1px; background: #EEEEEE;}" onmouseover="unlock()" onchange="selectSub(this)">
<option selected value="">Vibrat region
<option value="Moskva">Mosk.obl
<option value="novgorod">Novg.obl
<option value="lenobl">Leningr.obl
</select>
<br>
</td></tr>
<tr><td width="51%">
<span id="sub1">
<select name="sub" Value="1" style="{border: inset 1px; background: #EEEEEE;}" onchange="closeselect(this,'sub1')">
<option selected value="">gorod
<option value="Moskva">Moskva</option>
<option value="Mitishi">Mitishi</option>
<option value="Tver">Tver</option>
</select>
</span>
<span id="sub2">
<select name="sub" Value="1" style="{border: inset 1px; background: #EEEEEE;}" onchange="closeselect(this,'sub2')">
<option selected value="">gorod
<option value="Novgorod">Novgorod</option>
<option value="Gorodok">Gorodok</option>
<option value="Stancia">Stancia</option>
</select>
</span>
<span id="sub3">
<select name="sub" Value="1" style="{border: inset 1px; background: #EEEEEE;}" onchange="closeselect(this,'sub3')">
<option selected value="">gorod
<option value="Piter">Piter</option>
<option value="Lodeika">Lodeika</option>
<option value="Viborg">Viborg</option>
</select>
</span>
</td></tr>
</div>
</table>
<input type="hidden" name="otkuda" id="otkuda"> <!-- idut v script -->
<input type="hidden" name="kuda" id="kuda">
<input type="submit" value=" OK " style="cursor:pointer;" class="but"></form>
Отсутствует
Unghost, спасибо за разъяснение.
...Да ещё теряет переменную "откуда"...а переменная sub уходит как и надо до страницы test.php
У меня и sub не уходит... В общем можно заменить
... document.getElementById('otkuda').value = choice //********* tдля FF //subform.otkuda.value = choice //**************************************для IE ... <select name="otkuda"...
на
... document.getElementById('otkuda').value = choice //********* tдля FF ... <select name="otkuda2"...
тогда 'otkuda' не потеряется.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Да........ работает, но скрипт теперь можно использовать в игре спортлото
Код файла test.php /
<?php
print '
<br>otkuda'. $otkuda. '
<br> sub'.$sub;
?>
/ результаты странные: если выбрано Моск.обл/ Мытищи то test.php выдаёт Москва/ Лодейка , Если в начале предусматривалось что текстбокс-sub должен быть невидимым то теперь он видим постоянно.
Отсутствует
Да........ работает, но скрипт теперь можно использовать в игре спортлото
...
Ну, не знаю, у меня
выдаёт
в FF, Opera и IE. И никаких лишних текстбоксов.
Все браузеры отдают
Могу предположить:
1) Либо неправильно внесены предложенные изменения (или не туда)
2) Либо сервер/php глючат
Отредактировано Anton (14-05-2006 11:11:19)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Всё, что у меня есть, есть в этой теме:
html (http://forum.mozilla.ru/viewtopic.php?p … 45#p105445)
с исправлением (http://forum.mozilla.ru/viewtopic.php?p … 90#p105490)
и php (http://forum.mozilla.ru/viewtopic.php?p … 94#p105494)
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Страницы: 1