Могу ли я уменьшить этот код Javascript? - PullRequest
1 голос
/ 10 июня 2011

Можно ли уменьшить

function n()
  {
  var a; 
  if(a = document.getElementById('fb0')) 
    {
    a.onclick = i0;
    document.getElementById('fb1').onclick = i1;
    }
  }

до

function n()
  {
  if(document.getElementById('fb0').onclick = i0) 
    {
    document.getElementById('fb1').onclick = i1;
    }
  }

У меня сейчас нет отладчика.Я знаю, что document.getElementById('fb0') возвращает значение, потому что первый фрагмент работает нормально.Но нужно ли оценивать присвоение в операторе if?

Ответы [ 5 ]

1 голос
/ 10 июня 2011

Нет, вы не можете.

document.getElementById('fb0'), как уже сказано в имени функции, возвращает html element с идентификатором, равным fb0.После этого вы получаете доступ к атрибуту onclick.Но если get завершится неудачно, он сломает скрипт.

В первом сценарии вы проверяете, работает ли присвоение, означает ли это, что элемент существует и будет выполняться только в том случае, если он существует.

Этиразные поведения.

1 голос
/ 10 июня 2011

Не совсем;если getElementById('fb0') ничего не возвращает, ваша страница получит ошибку, а в первом случае не будет.

1 голос
/ 10 июня 2011

Чтобы проверить, возвращает ли «document.getElementById ('fb0')» элемент или ноль, вторая версия этого не делает и выдается ошибка, если нет элемента с идентификатором «fb0». Вторая версия в порядке, если вы не удалите элемент "fb0" из DOM в какой-то момент.

0 голосов
/ 10 июня 2011

Если вы делаете большой выбор DOM по ID, создайте сокращенную версию этого метода:

function byId( id ) { return document.getElementById(id); };

function n() {
  var a; 
  if(a = byId('fb0')) {
    a.onclick = i0;
    byId('fb1').onclick = i1;
  }
}

В этом случае выполнение назначения внутри условия не спасет вас ни одного персонажа. Это та же самая длина, чтобы сделать это с объявлением.

function byId( id ) { return document.getElementById(id); };

function n() {
  var a = byId('fb0'); 
  if(a) {
    a.onclick = i0;
    byId('fb1').onclick = i1;
  }
}
0 голосов
/ 10 июня 2011

Это не сработало бы, если бы document.getElementById('fb0') не существовало. document.getElementById('fb0').onclick в этом случае ничего не значит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...