Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Существует ли объект?
 
 автор: sl1p   (06.10.2008 в 19:07)   письмо автору
 
 

у объекта есть id,
каким способом можно узнать существует ли он?

  Ответить  
 
 автор: вялый   (06.10.2008 в 20:09)   письмо автору
 
   для: sl1p   (06.10.2008 в 19:07)
 

if(document.getElementById("id")==true)

  Ответить  
 
 автор: Nytrogen   (06.10.2008 в 20:45)   письмо автору
 
   для: вялый   (06.10.2008 в 20:09)
 

Почему у всех мания писать if (condition == true)? Как будто просто if (document.getElementById("id")) не прокатывает? Или меня глючит уже?

  Ответить  
 
 автор: вялый   (06.10.2008 в 22:02)   письмо автору
 
   для: Nytrogen   (06.10.2008 в 20:45)
 

опыт подсказывает, что if (condition == true) более надёжно

  Ответить  
 
 автор: sl1p   (06.10.2008 в 22:03)   письмо автору
 
   для: вялый   (06.10.2008 в 22:02)
 

зы. if(document.getElementById('id')==true)
не катит почемуто.. кактит пример Нитрогена if(document.getElementById('id'))

  Ответить  
 
 автор: вялый   (06.10.2008 в 22:11)   письмо автору
 
   для: sl1p   (06.10.2008 в 22:03)
 

хозяин барин

  Ответить  
 
 автор: sl1p   (06.10.2008 в 22:25)   письмо автору
 
   для: вялый   (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);}
или же всё таки лучше стандартно юзать?

  Ответить  
 
 автор: sl1p   (06.10.2008 в 21:58)   письмо автору
 
   для: вялый   (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;

как это нормально реализовать?..

  Ответить  
 
 автор: вялый   (06.10.2008 в 22:10)   письмо автору
 
   для: 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;
             }
     }

  Ответить  
 
 автор: Nytrogen   (06.10.2008 в 22:16)   письмо автору
 
   для: 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:20)   письмо автору
 
   для: Nytrogen   (06.10.2008 в 22:16)
 

Какое у нас оперативное приведение двух различных способов, в каждом из которых есть свои недостатки с точки зрения семантики...

  Ответить  
 
 автор: sl1p   (06.10.2008 в 22:27)   письмо автору
 
   для: Nytrogen   (06.10.2008 в 22:16)
 

бессмыслено имхо (el('infommd') && el('infommd').style.display == "inline")
зачем тогда вообще проверять существует ли он? даже если не существует то второе условие всё равно провероится и кинется ошибкой..

  Ответить  
 
 автор: Nytrogen   (06.10.2008 в 22:34)   письмо автору
 
   для: 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" не проверится, и ошибки не будет.

  Ответить  
 
 автор: sl1p   (06.10.2008 в 22:38)   письмо автору
 
   для: Nytrogen   (06.10.2008 в 22:34)
 

хм ну если это так то это облегчает болезнь в 52 раза :))

  Ответить  
 
 автор: Nytrogen   (06.10.2008 в 22:42)   письмо автору
 
   для: sl1p   (06.10.2008 в 22:38)
 

Когда я перешёл на Visual Basic, я с этим лоханулся! Там приходится писать
if (a != 0) {
  if (b / a != 2) {
  ...
  }
}


когда в JS можно просто написать
if (a != 0 && b / a != 2) {
  ...
}


З.Ы. Это единственное, за что я люблю JavaScript =)

  Ответить  
 
 автор: sl1p   (06.10.2008 в 22:50)   письмо автору
 
   для: 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';
}

причём здесь имя переменной к имени функции, зачем оно кидается ошибкой?(

  Ответить  
 
 автор: Nytrogen   (06.10.2008 в 23:07)   письмо автору
 
   для: sl1p   (06.10.2008 в 22:50)
 

var el=el('infommd'); - вы это имеете в виду?

Несмотря на то, что для функции и переменной используются одинаковый идентификатор - el, это не должно вызвать ошибки, т.к. функция el и переменная el имеют разную область видимости:
переменная - локальный var в функции imd01;
функция - глобальный function в теле основной программы, не функции (проверьте)

  Ответить  
 
 автор: sl1p   (06.10.2008 в 23:16)   письмо автору
 
   для: Nytrogen   (06.10.2008 в 23:07)
 

да всё именно так, сам сижу удивляюсь.

  Ответить  
 
 автор: Nytrogen   (06.10.2008 в 23:27)   письмо автору
 
   для: sl1p   (06.10.2008 в 23:16)
 

Не знаю как в Opera и FF, но в IE точно в св-вах обозревателя есть пункт "Display a notification about every script error". Поставьте там галочку и узнаете, в какой строке у Вас ошибка... будет над чем удивляться конкретней =)

  Ответить  
 
 автор: sl1p   (06.10.2008 в 23:38)   письмо автору
 
   для: Nytrogen   (06.10.2008 в 23:27)
 

всё что говорит..

"Предполагается наличие объекта"
строка там где я объявляю переменную:)

  Ответить  
 
 автор: Nytrogen   (06.10.2008 в 23:41)   письмо автору
 
   для: sl1p   (06.10.2008 в 23:38)
 

а у Вас собственно infommd объявлен? Функции тоже все на месте?

  Ответить  
 
 автор: sl1p   (07.10.2008 в 00:00)   письмо автору
 
   для: Nytrogen   (06.10.2008 в 23:41)
 

lf всё есть)
просто если меняю имя переменной или функции, чтобы они были разные тогда всё нормально..

  Ответить  
 
 автор: Nytrogen   (07.10.2008 в 00:08)   письмо автору
 
   для: sl1p   (07.10.2008 в 00:00)
 

Интересно однако, да всё же не стоит шалить с одинаковыми идентификаторами =)

  Ответить  
 
 автор: sl1p   (07.10.2008 в 00:11)   письмо автору
 
   для: Nytrogen   (07.10.2008 в 00:08)
 

ну так и вылечил, изменил названия.. )

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования