|
|
|
| у объекта есть id,
каким способом можно узнать существует ли он? | |
|
|
|
|
|
|
|
для: sl1p
(06.10.2008 в 19:07)
| |
if(document.getElementById("id")==true)
|
| |
|
|
|
|
|
|
|
для: вялый
(06.10.2008 в 20:09)
| | Почему у всех мания писать if (condition == true)? Как будто просто if (document.getElementById("id")) не прокатывает? Или меня глючит уже? | |
|
|
|
|
|
|
|
для: Nytrogen
(06.10.2008 в 20:45)
| | опыт подсказывает, что if (condition == true) более надёжно | |
|
|
|
|
|
|
|
для: вялый
(06.10.2008 в 22:02)
| | зы. if(document.getElementById('id')==true)
не катит почемуто.. кактит пример Нитрогена if(document.getElementById('id')) | |
|
|
|
|
|
|
|
для: sl1p
(06.10.2008 в 22:03)
| | хозяин барин | |
|
|
|
|
|
|
|
для: вялый
(06.10.2008 в 22:11)
| | так не в том дело, просто при ==true вообще ничего не происходит)..
зы. спасибо за функцию.
зыы. почему не катит такая конструкция?
function imd01(){
var el=el('infommd');
el.style.display=(el.style.display=='none')?'inline':'none';
if(el.style.display=='inline')el('cfg').style.display='none';
}
|
ругается
Ошибка: el is not a function
Строка: 142
везде работает а тут решило не работать или как?)
изменил имя переменной и всё стало ок.... причём тут функция к переменной?
и вообще правильно ли использовать эту функцию?
function el(id){return document.getElementById(id);}
или же всё таки лучше стандартно юзать? | |
|
|
|
|
|
|
|
для: вялый
(06.10.2008 в 20:09)
| | эмм.. ещё такое:
function el(id){return document.getElementById(id)}
function it(where,val)
{
var f = el(where);
if (where == "whom"){
if(el('infommd')){
if(el('infommd').style.display=='inline'){imd03(val)}
}else{f.value = val;}
}
}
|
при вызове функции нужно следующее:
если infommd существует и его display=='inline' тогда вызываем imd03()
если же объекта нет или его display=='none' тогда выполняем f.value = val;
как это нормально реализовать?.. | |
|
|
|
|
|
|
|
для: sl1p
(06.10.2008 в 21:58)
| |
function it(where,val)
{var f=el(where);
var infommd=el('infommd');
if (where=="whom")
{if(infommd==true)
{if(infommd.style.display=='inline')imd03();
else if (infommd.style.display=='none')f.value = val;
}
else f.value = val;
}
}
|
| |
|
|
|
|
|
|
|
для: sl1p
(06.10.2008 в 21:58)
| |
function el(id){return document.getElementById(id)}
function it(where,val) {
var f = el(where);
if (where == "whom"){
if (el('infommd') && el('infommd').style.display == "inline") {
imd03();
} else if (!el('infommd') || el('infommd').style.display == "none") {
f.value = val;
}
}
}
|
| |
|
|
|
|
|
|
|
для: Nytrogen
(06.10.2008 в 22:16)
| | Какое у нас оперативное приведение двух различных способов, в каждом из которых есть свои недостатки с точки зрения семантики... | |
|
|
|
|
|
|
|
для: Nytrogen
(06.10.2008 в 22:16)
| | бессмыслено имхо (el('infommd') && el('infommd').style.display == "inline")
зачем тогда вообще проверять существует ли он? даже если не существует то второе условие всё равно провероится и кинется ошибкой.. | |
|
|
|
|
|
|
|
для: sl1p
(06.10.2008 в 22:27)
| | Вот! Хотел кстати приписку сделать! Все си-подобные языки замечательны тем, что:
false && a/0 > 10 - не даёт ошибки division by zero
true || a/0 > 10 - аналогично
|
Условие перестаёт проверяться, как только определено его значение! Можете проверить:
var a = true || confirm("Вы уверены?");
|
Таким образом, если el('infommd') даст false, el('infommd').style.display == "inline" не проверится, и ошибки не будет. | |
|
|
|
|
|
|
|
для: Nytrogen
(06.10.2008 в 22:34)
| | хм ну если это так то это облегчает болезнь в 52 раза :)) | |
|
|
|
|
|
|
|
для: sl1p
(06.10.2008 в 22:38)
| | Когда я перешёл на Visual Basic, я с этим лоханулся! Там приходится писать
if (a != 0) {
if (b / a != 2) {
...
}
}
|
когда в JS можно просто написать
if (a != 0 && b / a != 2) {
...
}
|
З.Ы. Это единственное, за что я люблю JavaScript =) | |
|
|
|
|
|
|
|
для: Nytrogen
(06.10.2008 в 22:42)
| | :)
сэр:)), ответьте
function imd01(){
var el=el('infommd');
el.style.display=(el.style.display=='none')?'inline':'none';
if(el.style.display=='inline')el('cfg').style.display='none';
}
причём здесь имя переменной к имени функции, зачем оно кидается ошибкой?( | |
|
|
|
|
|
|
|
для: sl1p
(06.10.2008 в 22:50)
| | var el=el('infommd'); - вы это имеете в виду?
Несмотря на то, что для функции и переменной используются одинаковый идентификатор - el, это не должно вызвать ошибки, т.к. функция el и переменная el имеют разную область видимости:
переменная - локальный var в функции imd01;
функция - глобальный function в теле основной программы, не функции (проверьте) | |
|
|
|
|
|
|
|
для: Nytrogen
(06.10.2008 в 23:07)
| | да всё именно так, сам сижу удивляюсь. | |
|
|
|
|
|
|
|
для: sl1p
(06.10.2008 в 23:16)
| | Не знаю как в Opera и FF, но в IE точно в св-вах обозревателя есть пункт "Display a notification about every script error". Поставьте там галочку и узнаете, в какой строке у Вас ошибка... будет над чем удивляться конкретней =) | |
|
|
|
|
|
|
|
для: Nytrogen
(06.10.2008 в 23:27)
| | всё что говорит..
"Предполагается наличие объекта"
строка там где я объявляю переменную:) | |
|
|
|
|
|
|
|
для: sl1p
(06.10.2008 в 23:38)
| | а у Вас собственно infommd объявлен? Функции тоже все на месте? | |
|
|
|
|
|
|
|
для: Nytrogen
(06.10.2008 в 23:41)
| | lf всё есть)
просто если меняю имя переменной или функции, чтобы они были разные тогда всё нормально.. | |
|
|
|
|
|
|
|
для: sl1p
(07.10.2008 в 00:00)
| | Интересно однако, да всё же не стоит шалить с одинаковыми идентификаторами =) | |
|
|
|
|
|
|
|
для: Nytrogen
(07.10.2008 в 00:08)
| | ну так и вылечил, изменил названия.. ) | |
|
|
|