1. JavaScript / Говнокод #2400

    +207.3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    $('div').each(function () {
    if ($(this).attr('id') == 'blok') {
    $(this).html('');
    }
    });

    Хочется взять и уебать…

    Запостил: fuckyounoob, 12 Января 2010

    Комментарии (35) RSS

    • код реален? откуда?
      p.s. плюсанул!
      Ответить
    • Бугога)
      Это кем надо быть...

      +1 откуда код?
      Ответить
    • Можно пояснения для нубов?
      Ответить
    • мда, поржал )))
      Ответить
    • document.getElementById("blok").innerHTML = "";

      - а так даже jquery не нужен. Люди совсем программировать разучились.
      Ответить
      • Ай малаца!
        Ответить
      • Это очень правильно. Надо иметь ввиду еще, что в jQuery много вещей через жопу сделано. Например, для получения текстового содержимого элемента (метод text()) не используется короткий кроссбраузерный путь: elem.textContent || elem.innerText; А делается перебор всех чайлдов и проверка это текстовая нода или нет, и соответсвенно собирается строка из этого. Такой подход глючит например, если у элемента есть чайлд элемент object или canvas.
        Ответить
        • Видимо на то есть свои причины.
          Впрочем, я сам видел такой говнокод:
          merge: function( first, second ) {
                  // We have to loop this way because IE & Opera overwrite the length
                  // expando of getElementsByTagName
                  var i = 0, elem, pos = first.length;
                  // Also, we need to make sure that the correct elements are being returned
                  // (IE returns comment nodes in a '*' query)
                  if ( !jQuery.support.getAll ) {
                      while ( (elem = second[ i++ ]) != null )
                          if ( elem.nodeType != 8 )
                              first[ pos++ ] = elem;
          
                  } else
                      while ( (elem = second[ i++ ]) != null )
                          first[ pos++ ] = elem;
          
                  return first;
              }
          Ответить
        • Сделал бы всем лучше, если бы написал патч.
          Ответить
      • Айайай, а если элемента id = blok не существует?

        Мне кажется, что на самом деле у в данной задаче был не один элемент с id = blok, что, безусловно, тоже неправильно. Перебор всех div'ов на странице, конечно, брутальный метод.
        Ответить
        • А если элемента нет, то если по нормальному, то должна вывестись ошибка. И если у человека в коде несколько элементов с одним id, то это чисто его проблемы, что он не знает стандартов.
          Ответить
        • id может быть только один.
          Ответить
        • Rules with overly qualified selectors
          For example:

          ul#top_blue_nav {...}
          form#UserLogin {...}

          ID selectors are unique by definition. Including tag or class qualifiers just adds redundant information that needs to be evaluated needlessly.
          Ответить
      • Угу, даешь проекты на чистом JS, долой всякие джыквери мутулзы и эксты с ними же.
        Ответить
      • собственно, скорее всего аффтор подразумевал поиск нескольких дивов, геБайОйди не выручит...
        Ответить
        • А использовать классы вера не позволяет?
          Ответить
          • А меня то че спрашиваешь? Это к автору вопрос.
            Ответить
    • Вспомнился бойан с 10 страницы:
      $('div[id="myid"]')
      Ответить
    • Из той же серии:

      $('*).each(function () {
      if ($(this).attr('tagName') == 'div') {
      if ($(this).attr('id') == 'blok') {
      $(this).html('');
      }}
      });
      Ответить
    • ыыы я так пишу )
      Ответить
    • тут правильнее юзать
      $('#blok').empty();

      в этом случае "Other jQuery constructs such as data or event handlers are erased as well."
      зы плюсанул))
      Ответить
    • А может
      var block = $('#blok');
      if(block.length)
      {

      }
      Ответить

    Добавить комментарий