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


Автор: supervladislav 19.7.2008, 17:43

подскажите пожалуйста в чём дело в опере и мозилле всё нормально 
в чём дело подскажите 
Код

function ud()

{
text3="Коммерческая недвижимость";
text2="Жилая недвижимость";
msg="Земельный участок";
var text=document.getElementById('ttype2').value;
var select=document.getElementsByName("ttype3")[0];
var vib=select.options[select.selectedIndex].value;

if((vib==msg) && (text3==text))
{ 
document.getElementById("os1").style.display='none'; 
document.getElementById("kom01").style.display='none'; 
document.getElementById("kom02").style.display='block';
document.getElementById("nos").style.display='none';
}

if((vib==msg) && (text2==text))
{
document.getElementById("os1").style.display='none'; 
document.getElementById("gi1").style.display='none'; 
document.getElementById("gi2").style.display='block';
document.getElementById("nos").style.display='none';
}
}
</script>

Автор: vasac 19.7.2008, 18:48
Объявляйте переменные через var.

Автор: supervladislav 19.7.2008, 18:51
объявил неработатет
Код

function ud()

{
var text3="Коммерческая недвижимость";
var text2="Жилая недвижимость";
var msg="Земельный участок";
var text=document.getElementById('ttype2').value;
var select=document.getElementsByName("ttype3")[0];
var vib=select.options[select.selectedIndex].value;

if((vib==msg) && (text3==text))
{ 
document.getElementById("os1").style.display='none'; 
document.getElementById("kom01").style.display='none'; 
document.getElementById("kom02").style.display='block';
document.getElementById("nos").style.display='none';
}

if((vib==msg) && (text2==text))
{
document.getElementById("os1").style.display='none'; 
document.getElementById("gi1").style.display='none'; 
document.getElementById("gi2").style.display='block';
document.getElementById("nos").style.display='none';
}
}
</script>

Автор: vasac 19.7.2008, 21:18
Тогда приведите минимальный рабочий код, воспроизводящий проблему, чтобы можно было скопировать себе и протестировать.
Опишите как должно работать и что значит "не работает".

Автор: supervladislav 19.7.2008, 21:32
мне нужно чтоб при добовлении в эллемент value элемента option словосочетания "земельный участок " 
происходила маскировка одной части таблицы на другую 
но дело в том ,что есть комерческая недвижимость и желая ,когда выводится комерческая недижимость для неё выводится своя таблица ,а когда жилая своя ,соттведственно код написаный ниже существует и для комерческой недвижимости и для жилой недвижимости свой



часть кода хтмл
Код

<div style="display:none;" id=kom02>
<table border=0 bordercolor=black width=550px CELLPADDING=0 CELLSPACING=0 align=center >
<tr  align="left">
    <td height=20 width=250px><span class=gr>Площадь земельного участка(м2):</td><td width=300px><input type=text onkeypress="check_key2()" name=plashad2 class=sea></td>
</tr>
<tr height=20  align="left"><td colspan=2 width=300px><span class=gr>назначение земельного участка:</td>
</tr>
<tr align="left">
<td height=20 width=250px align=left><span class=gr>ижс(индивидуальное  жилищное строительство)</span></td>
<td height=20 width=300px align=left><input type=radio name=naz value="1"></td>

</tr>
<tr align="left">
<td height=20 width=250px align=left><span class=gr>с/х(сельскохозяйственное)</sapn></td>
<td height=20 width=300px align=left><input type=radio name=naz value="2"></td>

</tr>
<tr align="left">
    <td height=20 width=250px align=left><span class=gr>Электричество:</td><td width=300px><span class=gr><input type=checkbox name=elekt></td>
</tr>
<tr align="left">
    <td height=20 width=250px align=left><span class=gr>Газ:</td><td width=300px><span class=gr><input type=checkbox name=gaz></td>
</tr>
<tr align="left">
    <td height=20 width=250px align=left><span class=gr>Водоснабжение:</td><td width=300px><span class=gr><input type=checkbox name=voda></td>
</tr>
<tr align="left">
    <td height=20 width=250px align=left><span class=gr>Отопление:</td><td width=300px><span class=gr><input type=checkbox name=teplo></td>
</tr>
<tr align="left">
    <td height=20 width=250px align=left><span class=gr>Канализация:</td><td width=300px><span class=gr><input type=checkbox name=kanal></td>
</tr>

</table>
</div>

Автор: supervladislav 19.7.2008, 23:48
проверил подобная конструкция неработатет только для эксплорера выводил через алерт 
там пустое место 
Код

var text3="Коммерческая недвижимость";
var text2="Жилая недвижимость";
var msg="Земельный участок";
var text=document.getElementById('ttype2').value;
var select=document.getElementsByName('ttype3')[0];
var vib=select.options[select.selectedIndex].value;
alert(text);
alert(vib);
if((vib==msg) && (text3==text))
{ 
document.getElementById('os1').style.display='none'; 
document.getElementById('kom01').style.display='none'; 
document.getElementById('kom02').style.display='block';

}

if((vib==msg) && (text2==text))
{
document.getElementById('os1').style.display='none'; 
document.getElementById('gi1').style.display='none'; 
document.getElementById('gi2').style.display='block';

}
}
</script>


Автор: supervladislav 20.7.2008, 00:18
зараза поменял всё на вот так во всех браузерах кроме ие

скажите а в кодировке может быть дело 
Код

function ud()

{
var text3="Коммерческая недвижимость";
var text2="Жилая недвижимость";
var msg="Земельный участок";
var text=document.getElementById('nfg').value;

var vib=document.form.obf.options[document.form.obf.selectedIndex].value;
alert(text);
alert(vib);
if((vib==msg) && (text3==text))
{ 
document.getElementById('os1').style.display='none'; 
document.getElementById('kom01').style.display='none'; 
document.getElementById('kom02').style.display='block';

}

if((vib==msg) && (text2==text))
{
document.getElementById('os1').style.display='none'; 
document.getElementById('gi1').style.display='none'; 
document.getElementById('gi2').style.display='block';

}
}
</script>

Автор: SelenIT 20.7.2008, 01:34
Переменные случайно не совпадают с id-ами элементов? IE, гад, по умолчанию создает для каждого id-а (и name-а) глобальную переменную, которую фиг переопределишь. Возможно, затык в этом...

Автор: supervladislav 20.7.2008, 15:13
случайно нет ))))а скажите в кодировке может быть дело 

Автор: vasac 20.7.2008, 15:56
Каким образом соотносится приведенный вами html-код и функция ud()?

Автор: supervladislav 20.7.2008, 16:17
это кусок html кода в контейнере div c   id=kom02,который выводиться в первом случае ))весь код разместить немогу очень много места нужно будет но могу адресочек дать 
www.odnaminuta.ru   
добавить новое объявление ,к сожалению нужна регистрация  

Автор: vasac 20.7.2008, 17:07
в самом начале кода:
Код

var text=document.getElementById('ttype2').value;
var select=document.getElementsByName('ttype3')[0];

В html нет ни ttype2, ни ttype3.

Так же нет ни вызова ud() в JS, ни установки её в качестве обработчика в HTML. Как она вызывается непонятно.

Попробуйте всё-таки привести такой код, который можно было сразу вставить в файл и увидеть в нём проблему.

Автор: supervladislav 20.7.2008, 17:23
вот так я сделал каждому полю присвоен id функция вызовается 


код вызова функции
Код

<tr align="left">
    <td height=20 width=300px><span class=gr>Объект:</td><td align=left  width=300px><select name=ttype3 style="font-size: 11px;" onchange="ud();" id=obf><? while ($datt4=mysql_fetch_array($tt4)) {?><option <? if ($datt4[name] == $dat[ttype3]) echo "SELECTED";?> ><? echo $datt4[name];}?></select>


мой исправленый код неработает 

Код

function ud()

{
var text3="Коммерческая недвижимость";
var text2="Жилая недвижимость";
var msg="Земельный участок";
var text=document.getElementById('nfg').value;

var vib=document.form.obf.options[document.form.obf.selectedIndex].value;

if((vib==msg) && (text3==text))
{ 

document.getElementById('os1').style.display='none'; 
document.getElementById('kom01').style.display='none'; 
document.getElementById('kom02').style.display='block';

}

if((vib==msg) && (text2==text))
{

document.getElementById('os1').style.display='none'; 
document.getElementById('gi1').style.display='none'; 
document.getElementById('gi2').style.display='block';

}
}
</script>
 

Автор: Ace Wentura 21.7.2008, 11:07
А что конкретно не работает и что должно работать?
Смутно понимая о чём идёт речь попробовал собрать работающий код, исходя из того, как понял задачу.
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Документ Без Имени</title>
<script language="javascript" type="text/javascript">
function ud(obj)
{
    var text3="Коммерческая недвижимость";
    var text2="Жилая недвижимость";
    var msg="Земельный участок";
    var vib=document.getElementById('nfg').value;
    var text=obj.options[obj.selectedIndex].value;
    if((vib==msg) && (text3==text))
    { 
        document.getElementById('os1').style.display='none'; 
        document.getElementById('kom01').style.display='none'; 
        document.getElementById('kom02').style.display='block';
    }
    if((vib==msg) && (text2==text)){
        document.getElementById('os1').style.display='none'; 
        document.getElementById('gi1').style.display='none'; 
        document.getElementById('gi2').style.display='block';
    }
}
</script>
</head>

<body>
<input type="text" id="nfg" value="Земельный участок" />

<select onchange="JavaScript:ud(this);">
    <option value="1">1</option>
    <option value="Коммерческая недвижимость">Коммерческая недвижимость</option>
    <option value="Жилая недвижимость">Жилая недвижимость</option>
</select>


<div id="os1">div os1</div>
<div id="kom01">div kom01</div>
<div id="kom02">div kom02</div>
<div id="gi1">div gi1</div>
<div id="gi2">div gi2</div>
</body>
</html>


Автор: supervladislav 21.7.2008, 13:47
всё ребята спасибо я разобрался 

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