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

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    scope = new Object();
    scope = document.getElementById("scope");
    …
    var block = document.getElementById("scope");
    var els = block.getElementsByClassName("noactive");
    for(var n in els)
    {
    els[n].className = "active";
    }

    Проклятие, этот человек хоть что-нибудь думает, когда кодит? Хочется взять — и… Потому что мне с этим потом работать.

    Запостил: torbasow, 31 Июля 2014

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

    • зеленка ->> Первая строка - выделение памяти, да

      Жкверь религия не позволяет? любимое getElementById

      ну и можно было проверять имя класса в процессе пробежки, а не отсеивать отдельным циклом
      Ответить
      • Ну да, на жквери это будет че-то типа:
        $('#scope .noactive').addClass('active');
        Ответить
        • И стоило ли есть ежа, если еж колючий и невкусный?
          Ответить
        • Зачем JQuery?
          Ответить
          • Меньше писать, кроссбраузерней. Я просто ненавижу веб, жс и всё, что с ними связано. И если мне все же иногда приходится что-то делать на жс - я стараюсь сделать это так, чтобы как можно меньше лезть в браузеродебри и с минимальными затратами моего времени. Отсюда и жквери.

            Да и один хрен, если жквери уже подключено ради всяких там календариков и диалогов - то почему бы не поюзать его еще и для поиска элементов, развешивания обработчиков и ajax'а?
            Ответить
            • Зачем идти пешком когда можно ехать верхом?
              Ответить
              • Вот поэтому и WinRT...
                Нафига всякие кресты, шарпики и делфи, когда есть жКверь.
                Ответить
                • В самом деле - нужно писать фронтэнд на крестах, шарпах и жабах (делфи я не очень уважаю)
                  Ответить
                • А в WinRT работает жкверь?
                  Ответить
                  • С чего-бы ему не работать, если рантайм поддерживает HTML5 и JS.
                    Я ещё во времена работы с MFC, хостил в приложении Trident на весь экран и там пользовал обычный JS.
                    Ответить
                  • Вики >> WinRT поддерживает разработку на C++ (обычно с использованием расширения языка Component Extensions, C++/CX), управляемых языках C# и VB.NET, а также JavaScript.
                    Ответить
              • Верхом на хуе? Эх, прокачу!..
                Ответить
                • не порочь классику
                  Ответить
                  • Возьми мой джойстик в руки...
                    Ответить
                    • Спасибо, я только на компе играю
                      Ответить
                      • А что мешает на компе играть с геймпадом?
                        Ответить
                        • С геймпадом - ничего - играю в денди игрули. А джойстик с компом у меня ассоциируется не больше чем корова и уран.
                          Ответить
                          • > играю в денди игрули
                            battletoads прошел?
                            Ответить
                            • С сейвами и разрывом мягкий тканей нижнего полушария. А вообще мои любимые игры на денди - megaman (rockman) 1-6
                              Ответить
                              • Да, megaman это еще тот разрыв жопы...
                                Ответить
                                • вот мегамена 1-6 (и 7 8, заделаные под восьмибитку ) я прошел без сейвов, а боежаб не могу. Они слишком хардкорны.

                                  Не так давно (относительно ) вышел Megaman vs Street Fighter - вот это игра для девочек
                                  Ответить
                                  • А я в детстве из мегаменов играл только в первого. Дальше 3-4 уровней пройти не мог, независимо от выбора. А потом, когда появился комп, играть в него желания не было...

                                    > а боежаб не могу
                                    Жопораздирающий хардкор, да, даже если старт-вверх юзать. Но музыка, графон и весьма разнообразные уровни для того времени казались чем-то нереально крутым... Поэтому менялись с другом этим картриджем, рассказывали, чего нового увидели, а по выходным игрались у меня на цветном телеке (фотон с припаянным pal/secam декодером), пока родители не разгонят ;) И таки прошли.
                                    Ответить
                                    • Мегамен на денди только 1 был (других я не встречал ни у кого, пираты -сволочи такие - нифига не разбирались че пиратить), его я прошел сам, помню до сих пор боль от босса, который кусочками вылетает из-за экрана.

                                      А боежаб у меня не было, были только у знакомых на сеге. Я брал на выходные, так и не смог пройти 3 левел с гонками. Но музыка доставляла. Я вообще люблю музыку с денди, SNES, Sega. Наверно самая доставляющая

                                      http://www.youtube.com/watch?v=MlGDKfgz4fA

                                      А по метроиду фанаты целый альбом каверов запилили

                                      http://www.youtube.com/watch?v=ung3cKl-OE4&list=PLE2E64D9AD0F9CED7
                                      Ответить
                                      • > Я брал на выходные, так и не смог пройти 3 левел с гонками.
                                        Тебе повезло, вовремя остановился. Те, кто проходил дальше 3-го были обречены играть дальше.

                                        А вот SNES и сегу(!) я видел только на эмуляторах.
                                        Ответить
                                        • Snes я тоже не видел, говорят были, но официальные, стоили как крыло от самолета, с одноигровками по 500 рублей (теми деньгами еще. 150 стаканчиков мороженного) Сегу я видел не часто, да и игр там особо крутых не было (пираты мудаки) поэтому 90% моего игрового детства - это денди.

                                          Марио (первого) никогда не любил. Хуита какая то шизофреническая)
                                          Ответить
                                          • на сеге были мортал комбат, дюна
                                            16 бит поражали воображение после денди
                                            но у меня не было даже денди, всё только у друзей
                                            Ответить
                                            • Ну сегу у нас в городе как-то совсем пропустили. Народ очень быстро спрыгнул на первую плойку с ее паршивеньким но 3д и компы.

                                              А дома у меня была только денди с клавой и бейсиком (не сюбор, а какая-то более старая китайская модель).
                                              Ответить
                                              • у одного моего товарища вместо денди вообще был спектрум (или женерик его) с играми на кассете
                                                приходилось ждать по десятку минут, пока загрузится игра

                                                а компы я уже увидел во времена нфс 3-4 и фифы 98 на информатике
                                                даже на говноселерончиках это было божественно, нам разрешали после выполнения заданий, если оставалось время, установить и поиграть во что хотим - была отличная мотивация сделать задания побыстрее, на скорость

                                                потом у одного товарища дома нашелся комп с рива тнт 2 ультра, везучий гад
                                                Ответить
                                                • >>была отличная мотивация сделать задания побыстрее, на скорость

                                                  Помню в 7 классе (2005-2006) год я ходил на кружок, час кодил бейсик, а потом час игрались в кваку 3 или SoF 2 на древних компах с отпиздюливанием IRL )
                                                  Ответить
                                            • мортал я видел только на компе и на денди пиратку с карликовым горо) А вот дюну я не освоил в детстве, смотрел как знакомый играл, но музыка и графика просто божественными казались. До сих пор дюну воспринимаю именно по игре, а не книгам и фильму. Заставочка
                                              http://www.youtube.com/watch?v=h45vZm1oIjg

                                              Можно обратить внимание, что делала игру тогда никому не известная westwood, одни из богов стратегий, запилившие потом C&C
                                              Ответить
                                          • >Марио (первого) никогда не любил. Хуита какая то шизофреническая)
                                            > Хуита какая то шизофреническая)
                                            Это хорошая характеристика к новому говнофорсу.
                                            Ответить
                                    • > Дальше 3-4 уровней пройти не мог, независимо от выбора.
                                      Я в детстве играл в игры, они почему-то казались очень сложными. Пройти там первые уровни - подвиг.
                                      На эмуляторах без ничего влёгкую, сохранялся только чтобы сходить поесть-поспать.
                                      Или я был такой косорукий, или ещё что. Правда, в сильно хардкорные игры я не играл ни тогда, ни сейчас.
                                      Ответить
                                      • У меня наоборот - в детстве было сложно, но проходил. Например халву первую. Потом поигрался во всякие - прячь жопу энд регенерируй - сел за халву - под конец припекать стало жестко. как и SoF

                                        А Сириес Сэма и пейнкиллера как в детстве не мог, так и щас не могу.
                                        Ответить
        • > $('#scope .noactive').addClass('active');

          /me thinks тут баг: элемент будет одновременно .noactive и .active.

          В оригинальном коде тоже будет весело, когда дизайнер решит повесить на #score ещё один класс.
          Ответить
          • > /me thinks тут баг
            Ну тогда так: $('#scope .noactive').addClass('active').removeCla ss('.noactive');
            Ответить
            • Вроде есть версия addClass, которая берёт функцию замены классов, что-то вроде
              $('#scope .noactive').addClass(function(i, c) {
                  return c === 'noactive' ? 'active' : c;
              });
              Ответить
              • Да ну, как-то запутанно получается. С addClass+removeClass, имхо, намерения показаны наглядней.
                Ответить
          • Так я автору и сказал. …На самом деле, непонятно вообще, зачем тут эти классы, когда по смыслу там надо работать с disabled.
            Ответить
            • По смыслу, disabled всё-же для другого используется.
              Я из кода подумал, что это некий вариант ховера или мигания, при изменении значения.
              Ответить
              • > Я из кода подумал, что это некий вариант ховера или мигания, при изменении значения.

                Небось что-то вроде ГК-шного рейтинга: при клике на +/- нужно отключить контрол, чтобы нельзя было проголосовать второй раз.
                Ответить
                • Маловероятно - в коде все же по списку пробегаются. Только есть на клик у Dom обьекста ставиться класс active, а потом пробегается, находится он же и ставится класс unactive, но на такое не способен даже полный нуб
                  Ответить
                • Скорее WebSocket или форма, когда у тебя с сервера приходит значение и на клиенте надо мигнуть или подсветить элемент.
                  Скажем, если это АСУшная мнемосхема.
                  Ответить
              • Мимо плюса попал
                Ответить
      • jQuery тут ни к чему, Javascript всё это умеет. Только не так, конечно,— а с forEach и classList.
        Ну и именования — отдельная песнь. Под scope автор, между прочим, имел в виду score, хотя score тут тоже не пришей кобыле хвост.
        Ответить
        • >>jQuery тут ни к чему, Javascript всё это умеет

          логично, жкверь - это просто либа. Но либа удобая
          Ответить
          • boost тут ни к чему, всё можно запилить и на чистом с++.
            Ответить
        • > Только не так, конечно,— а с forEach и classList.
          Ага. Вот только писанины вдвое больше. И наглядности меньше.

          Если уж делать на чистом жс - то я бы поюзал document.querySelectorAll("#scope .noactive"), если, конечно, IE8+ устроит. Не люблю рукопашный обход DOM'а, если можно декларативно выбрать нужные мне элементы.
          Ответить

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