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

    +144.9

    1. 1
    <a href="javascript:void(0)" onclick="this.parentNode.submit(); return false;">Добавить</a>

    в ответ на http://govnokod.ru/1994 и длинный флуд в коментах.
    говнокод или нормально?

    Запостил: tinimi, 20 Октября 2009

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

    • неприятно быть неправым таки да?)))
      нормально, патамушта
      1) линк может быть ВНЕ формы, и это самое очевидное
      2) http://govnokod.ru/1994
      Ответить
      • парент - форма.
        это новый пример - не надо брать ответы из другого поста.
        раскажите теперь как плох фрагмент кода. абстрагировавшись от контекста где он используется. есть только одна строчка кода. не надо строить догадки где что используется.
        ссылку цитировать ненадо - ссылка в описании говнокода.
        Ответить
        • "ответы из другого поста" - читай ниже. будешь варить пока тебе не скажу тожидаемого??? тут НЕ видно где парент, в этом фрагменте))) пости третий, где будет видно, что форма парент. но и тогда это НЕ будет говнокодом. Пля, ты когда гришь что форма парент сам строишь догадки, ибо реально есть только одна строчка когда.

          А ссылка в описании кода - не говнокода
          Ответить
          • ненаходишь что сам себе противоречишь?
            Ответить
            • перечитай свой пост. это ТЫ себе противоречишь

              "есть только одна строчка кода. не надо строить догадки где что используется." - как-то хреновато, мягко гря, вяжется с "парент - форма". ну не видно, что тут парент. так что парент может быть любым, а форма гденить в заднице. как тебе это ещё доходчивее объяснить яхз. ну адекватнее читай, штоле
              Ответить
              • а с чего ты тогда взял в предыдущем что подключен jquery? что вообще форма существует? а может javascript вообще неподдерживается браузером?

                тогда твои догадки построились в одну цепочку, теперь другая.

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

                  1) jquery был подключен - потому что очевидно onclick="$('#frm').submit(). на прототайп не кричи, была бы другая запись
                  2) форма существует, потому что обычно разработчики сабмитят форму. ты можешь сабмитить что угодно, это уже не вызывает сомнений наверное ни у кого
                  3) пример современного браузера без поддержки жс есть?? я таких не знаю. Можно жс отключить, но юзеры этого делать не будут. в веб 2.0 юзер без жс, без флэша - не юзер. Он будет качать флэш и не выключать жс. И даже естли какбе типа вроде жс был отключен, то и твои вопли про parentNode нах были??

                  В общем это реально клиника, упёрся ты как баран. Пойду-ка я читать более весёлый и разнообразный код. Может кто тебе тут ещё наотвечает, повесели людей своей реакцией ;-DDD
                  Ответить
                  • На мой взгляд нету там никакого jquery
                    "javascript:void(0)" - обыкновенный вызов функции void() с параметром 0
                    "this.parentNode.submit();" - а это всё обыкновенная жс-ная работа с ДОМом, никаким jquery тут тоже не пахнет.
                    "return false;" - наверное jquery сдесь :))
                    З.Ы. откуда кто-то вообще нашёл "$('#frm').submit()" о_О.

                    З.З.Ы. Похоже что код - попытка реализовать отправку данных без перезагрузки страницы. Имхо - банально не сработает. Во всяком случае в знакомых мне браузерах.
                    Ответить
                    • На З.Ы. это продолжение обсуждения кода
                      <a href="#" class="lalalala" onclick="$('#frm').submit()">Подтвердить </a>
                      Просто товарищ решил вынести, на его взгляд, правильное решение отдельным постом

                      На З.Ы.Ы. Сработает, если перехватить событие onsubmit формы
                      Ответить
                      • "Сработает, если перехватить событие onsubmit формы"
                        Имеется ввиду выполнение какой-нибудь функции в онсабмите? Тогда это тру говнокод, ведь было бы куда проще и логичнее обходя все сабмиты сразу эту функцию выполнять ).
                        Или сдесь речь идёт про то что каким-то перехватом онсабмита, можно сабмитить на сервак данные без перезагрузки страницы? (без принципов AJAX, а конкретнее без XML запросов.)
                        Ответить
        • короче успокойся наверное)))) ну на восьмисотый раз доброе коммьюнити признает это говнокодом, но чисто чтобы восемьсот первый раз не разбирать этот кусок кода ;-DDD
          Ответить
          • ты в предыдущем топике распинался что это говнокод. теперь нет? что изменилось?
            Ответить
            • значица читать ты не умеешь. пруфлинк тодгда на коммент где грится что это говнокод
              Ответить
              • Лучше буду умнее и не стану больше отвечать. Наверно десятком коментариев ты восхвалял этот фрагмент.
                Ответить
    • кстати, это новая темка да. постить код, до тех пор пока он на тысячный раз не станет говнокодом))) варить типа до определённой кондиции)) или наоборот отмывать.... типа
      "Re[240]: ну правда это говнокооооод.... ну ребятаааа"
      Ответить
      • в предыдущем упорно доказывали что говнокод. теперь это не говнокод?
        Ответить
        • ты прочитай внимательно, то что это говнокод говорил только ты
          Ответить
          • и ты расказывал как он говнист. вот отдельно запостил - раскажи всем какой это говнокод.
            Ответить
            • и тут тоже - пруфлинк давай. на том что это говнокод настаивал только ты
              Ответить
    • Анонимусы, спорим, не подеретесь?
      Ответить
    • Код как код. javascript:void(0) конечно не очень кошерно, но что поделаешь?
      Ответить
      • вообщето javascript:void(0) это наикошернейший вариант
        автор, this.parentNode - говнокод
        автор, $(this).parents('form') тоже был бы говнокодом
        автор, $('#anyform') - не говнокод, говнокод там был только в href="#"
        Ответить
        • Попробуйте кликнуть по такой ссылке средней кнопкой мыши. $('#anyform') подразумевает наличие jQuery, а если его нет? Тащить ради одной этой сомнительной фишки? Есть еще document.forms[form_name], кстати.
          Ответить
          • document.getElementById('anyform')?
            да и чего вы к жыквери прицепились то, понятное дело, что ради элементарного сабмита он нахрен не сдался
            Ответить
          • document.forms[form_name] - говнокод, самый ужасный из всех говнокодов на эту тему
            средняя кнопка? для сабмита формы? зачем? да и если бы там было #, то средняя кнопка тоже ничего не решила бы
            Ответить
            • Про ужасный говнокод извольте объясниться. А средней кнопкой я люблю кликать по ссылке. И мне совершенно наплевать делает она сабмит или ведет на другую страницу. Как вариант, туда можно запихнуть обработчик onclick: href="javascript:document.getElementById ('anyform').submit()"
              Ответить
              • document.forms ужасный imho, only
                средняя кнопка в новом окне/табе откроет href
                href="javascript:..." ни в коем случае
                Ответить
                • а зачем вообще код вешать на onclick по ссылке?
                  Ответить
                  • вы о том что его там вообще не должно быть или о некошерности использования конкретно атрибута onlick?
                    Ответить
                    • Некошерности аттрибута onclick в качестве замены href конкретно в данном случае.
                      Ответить
                      • HREF is an abbreviation for "Hypertext REFerence", думаю дальше объяснять не стоит :)
                        да и наличие кода js непосредственно в html элементах некошерно, ибо html = view (исключение javascript:void(0))
                        Ответить
                        • Не нужно делать из MVC/MVP делать абсолютную истину. Это может быть домашней страничкой программиста Васи, где enterprise подходы попросту излишни. И почему это javascript:void(0) -- это кошерно?
                          Ответить
                          • javascript:void(0) это костыль, также как и href="#"
                            а его кошерность в том, что браузер в реальности не делает _ничего_, в отличие от #
                            и да, давайте спихивать все на говнокодера Васю ;)
                            Ответить
                            • Тем не менее, почему бы туда не запихать код (ок, код запихнуть в функцию, а из href ее дернуть)?
                              Ответить
        • а ну еще про return false; в onclick забыл, его отсутствие тоже говнокод
          Ответить
          • return false нужен в onsubmit, чтобы подавить отправку.
            Ответить
            • подавлять отправку нужно только в том случае, если отправка не должна быть выполнена, а интересует ли это нас в данном случае?
              Ответить
          • ps. в данном случае
            pps. факинг коментс эдитинг...
            Ответить
        • "this.parentNode - говнокод" С каких пор оригинаьная жс-овская работа с ДОМ стала говнокодом?
          Про библиотеки, молча соглашусь с sudden_def.
          Ответить
          • Боже ты мой, да откуда вас таких берут, ну что приелись к этим библиотекам
            речь не о работе с DOM напрямую или нет!!!
            речь о неприемлемой зависимости от родительских узлов дерева
            теми строками я пытался объяснить что:
            1. this.parentNode может вовсе и не быть метода submit()
            2. у this может и не быть родительского элемента form
            3. $('#anyform') == document.getElementById('anyform'), - не говнокод
            Ответить
            • Плюсану
              Гаже этого может быть только запрос типа ``parent.parent.parent.parent.children[4]``
              Ответить
    • клон нах
      баян
      Ответить
    • показать все, что скрытоЧто бы было зaeбцa, не cocнyть ли Вам xyйцa?
      Ответить
      • ти пидер!!!!!!!!!!!!!!!!!!!!!!
        Ответить
        • Нет, с чего ты взял? Или ты в каждом видишь пидора? Может, тебе с себя начать надо?
          Ответить
    • вот это высер
      Ответить
    • верните мне мой 2007-й

      код говно, разумеется
      Ответить

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