Цифры в названии функции

Тема в разделе "Мегафлуд", создана пользователем Dark Wizard, 14 фев 2020.

  1. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    183
    Симпатии:
    77
    Не пойму почему вариант

    Код:
    Один выбор из нескольких
    <form id="form" name="form" method="POST">
              <input type="hidden" name="clan_help_id" value=""><span class="comment">Выберите один вариант:</span><br><br>
              <script>function reset(currentid, replacetext){
              if (currentid != 0) { form.elements.selectedoption[0].value = replacetext; }
              if (currentid != 1) { form.elements.selectedoption[1].value = replacetext; }
              if (currentid != 2) { form.elements.selectedoption[2].value = replacetext; }
              if (currentid != 3) { form.elements.selectedoption[3].value = replacetext; }
              }</script>
    <table class="datatable" border="1" cellspacing="0" cellpadding="4">
      <tr>
        <td><input id="selectedoption[0]" name="selectedoption[0]" type="number" value="0" min="0" onfocus="reset(0,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[0]">дуб</label></td>
      </tr><input type="hidden" name="optionlabel[0]" value="дуб">
      <tr>
        <td><input id="selectedoption[1]" name="selectedoption[1]" type="number" value="0" min="0" onfocus="reset(1,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[1]">берёза</label></td>
      </tr><input type="hidden" name="optionlabel[1]" value="берёза">
      <tr>
        <td><input id="selectedoption[2]" name="selectedoption[2]" type="number" value="0" min="0" onfocus="reset(2,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[2]">ель</label></td>
      </tr><input type="hidden" name="optionlabel[2]" value="ель">
      <tr>
        <td><input id="selectedoption[3]" name="selectedoption[3]" type="number" value="0" min="0" onfocus="reset(3,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[3]">ясень</label></td>
      </tr><input type="hidden" name="optionlabel[3]" value="ясень">
    </table>
    </form>
    
    работает, а вариант

    Код:
    Один выбор из нескольких
    <form id="form" name="form" method="POST">
              <input type="hidden" name="clan_help_id" value=""><span class="comment">Выберите один вариант:</span><br><br>
              <script>function reset6(currentid, replacetext){
              if (currentid != 0) { form.elements.selectedoption[0].value = replacetext; }
              if (currentid != 1) { form.elements.selectedoption[1].value = replacetext; }
              if (currentid != 2) { form.elements.selectedoption[2].value = replacetext; }
              if (currentid != 3) { form.elements.selectedoption[3].value = replacetext; }
              }</script>
    <table class="datatable" border="1" cellspacing="0" cellpadding="4">
      <tr>
        <td><input id="selectedoption[0]" name="selectedoption[0]" type="number" value="0" min="0" onfocus="reset6(0,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[0]">дуб</label></td>
      </tr><input type="hidden" name="optionlabel[0]" value="дуб">
      <tr>
        <td><input id="selectedoption[1]" name="selectedoption[1]" type="number" value="0" min="0" onfocus="reset6(1,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[1]">берёза</label></td>
      </tr><input type="hidden" name="optionlabel[1]" value="берёза">
      <tr>
        <td><input id="selectedoption[2]" name="selectedoption[2]" type="number" value="0" min="0" onfocus="reset6(2,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[2]">ель</label></td>
      </tr><input type="hidden" name="optionlabel[2]" value="ель">
      <tr>
        <td><input id="selectedoption[3]" name="selectedoption[3]" type="number" value="0" min="0" onfocus="reset6(3,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[3]">ясень</label></td>
      </tr><input type="hidden" name="optionlabel[3]" value="ясень">
    </table>
    </form>
    не работает, хотя я только изменил название функции с reset на reset6

    P.S. да и если вообще reset на любое другое название поменять почему-то не работает.
     
  2. qpPeW

    qpPeW Постоялец

    Регистр.:
    5 окт 2009
    Сообщения:
    125
    Симпатии:
    47
    HTML:
    
    Один выбор из нескольких
    <form id="form" name="form" method="POST">
        <input type="hidden" name="clan_help_id" value=""><span class="comment">Выберите один вариант:</span><br><br>
        <script>
            function reset6(currentid, replacetext) {
                if (currentid != 0) { form.elements[1].value = replacetext; }
                if (currentid != 1) { form.elements[3].value = replacetext; }
                if (currentid != 2) { form.elements[5].value = replacetext; }
                if (currentid != 3) { form.elements[7].value = replacetext; }
            }
        </script>
        <table class="datatable" border="1" cellspacing="0" cellpadding="4">
            <tr>
                <td><input id="selectedoption[0]" name="selectedoption[0]" type="number" value="0" min="0" onfocus="reset6(0, 0);" class="short">&nbsp;шт.</td>
                <td><label for="selectedoption[0]">дуб</label></td>
            </tr>
            <input type="hidden" name="optionlabel[0]" value="дуб">
            <tr>
                <td><input id="selectedoption[1]" name="selectedoption[1]" type="number" value="0" min="0" onfocus="reset6(1, 0);" class="short">&nbsp;шт.</td>
                <td><label for="selectedoption[1]">берёза</label></td>
            </tr>
            <input type="hidden" name="optionlabel[1]" value="берёза">
            <tr>
                <td><input id="selectedoption[2]" name="selectedoption[2]" type="number" value="0" min="0" onfocus="reset6(2, 0);" class="short">&nbsp;шт.</td>
                <td><label for="selectedoption[2]">ель</label></td>
            </tr>
            <input type="hidden" name="optionlabel[2]" value="ель">
            <tr>
                <td><input id="selectedoption[3]" name="selectedoption[3]" type="number" value="0" min="0" onfocus="reset6(3, 0);" class="short">&nbsp;шт.</td>
                <td><label for="selectedoption[3]">ясень</label></td>
            </tr>
            <input type="hidden" name="optionlabel[3]" value="ясень">
        </table>
    </form>
    
    или же так

    HTML:
    
    Один выбор из нескольких
    <form id="form" name="form" method="POST">
        <input type="hidden" name="clan_help_id" value=""><span class="comment">Выберите один вариант:</span><br><br>
        <script>
            function reset6(currentid, replacetext) {
                if (currentid != 0) { document.getElementById('selectedoption[0]').value = replacetext; }
                if (currentid != 1) { document.getElementById('selectedoption[1]').value = replacetext; }
                if (currentid != 2) { document.getElementById('selectedoption[2]').value = replacetext; }
                if (currentid != 3) { document.getElementById('selectedoption[3]').value = replacetext; }
            }
        </script>
        <table class="datatable" border="1" cellspacing="0" cellpadding="4">
            <tr>
                <td><input id="selectedoption[0]" name="selectedoption[0]" type="number" value="0" min="0" onfocus="reset6(0, 0);" class="short">&nbsp;шт.</td>
                <td><label for="selectedoption[0]">дуб</label></td>
            </tr>
            <input type="hidden" name="optionlabel[0]" value="дуб">
            <tr>
                <td><input id="selectedoption[1]" name="selectedoption[1]" type="number" value="0" min="0" onfocus="reset6(1, 0);" class="short">&nbsp;шт.</td>
                <td><label for="selectedoption[1]">берёза</label></td>
            </tr>
            <input type="hidden" name="optionlabel[1]" value="берёза">
            <tr>
                <td><input id="selectedoption[2]" name="selectedoption[2]" type="number" value="0" min="0" onfocus="reset6(2, 0);" class="short">&nbsp;шт.</td>
                <td><label for="selectedoption[2]">ель</label></td>
            </tr>
            <input type="hidden" name="optionlabel[2]" value="ель">
            <tr>
                <td><input id="selectedoption[3]" name="selectedoption[3]" type="number" value="0" min="0" onfocus="reset6(3, 0);" class="short">&nbsp;шт.</td>
                <td><label for="selectedoption[3]">ясень</label></td>
            </tr>
            <input type="hidden" name="optionlabel[3]" value="ясень">
        </table>
    </form>
    
     
    Dark Wizard нравится это.
  3. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    183
    Симпатии:
    77
    Спасибо, как вариант работает. А всё-таки как-то можно сделать с использованием ID элементов?
     
  4. qpPeW

    qpPeW Постоялец

    Регистр.:
    5 окт 2009
    Сообщения:
    125
    Симпатии:
    47
    Я же написал 2 варианта, второй как раз таки с использованием ID элемента.
     
    Dark Wizard нравится это.
  5. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    183
    Симпатии:
    77
    О, спасибо, сразу не увидел, то что надо. А вообще в чём у меня была проблема? И ещё вопрос, слово "reset" в JS зарезервировано и его нельзя использовать как название функции?
     
  6. qpPeW

    qpPeW Постоялец

    Регистр.:
    5 окт 2009
    Сообщения:
    125
    Симпатии:
    47
    Изначально не правильно составлен код.
    На сколько я знаю никакой резервации нету по функции reset.
     
  7. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    183
    Симпатии:
    77
    Я разобрался. В HTML/JS функция reset() обнуляет все элементы формы, поэтому показалось что моя функция работала, а на самом деле ни одна моя функция не работала, а обнулялось этой встроенной функцией reset (это можно проверить просто удалив мою функцию reset). С "document.getElementById" всё работает корректно.
     
  8. qpPeW

    qpPeW Постоялец

    Регистр.:
    5 окт 2009
    Сообщения:
    125
    Симпатии:
    47
    Если говорить об использовании в формате form.reset(), то в данном случаи reset не функция, а метод, но у Вас другой случай.
     
  9. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    183
    Симпатии:
    77
    Почему другой? Разве этот код (без JS функций)

    Код:
    Один выбор из нескольких
    <form id="form" name="form" method="POST">
    <span class="comment">Выберите один вариант:</span><br><br>
    <table class="datatable" border="1" cellspacing="0" cellpadding="4">
      <tr>
        <td><input id="selectedoption[0]" name="selectedoption[0]" type="number" value="0" min="0" onfocus="reset(0,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[0]">дуб</label></td>
      </tr><input type="hidden" name="optionlabel[0]" value="дуб">
      <tr>
        <td><input id="selectedoption[1]" name="selectedoption[1]" type="number" value="0" min="0" onfocus="reset(1,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[1]">берёза</label></td>
      </tr><input type="hidden" name="optionlabel[1]" value="берёза">
      <tr>
        <td><input id="selectedoption[2]" name="selectedoption[2]" type="number" value="0" min="0" onfocus="reset(2,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[2]">ель</label></td>
      </tr><input type="hidden" name="optionlabel[2]" value="ель">
      <tr>
        <td><input id="selectedoption[3]" name="selectedoption[3]" type="number" value="0" min="0" onfocus="reset(3,'0');" class="short">&nbsp;шт.</td>
        <td><label for="selectedoption[3]">ясень</label></td>
      </tr><input type="hidden" name="optionlabel[3]" value="ясень">
    </table>
    </form>
    работает не из-за метода reset?
     
  10. qpPeW

    qpPeW Постоялец

    Регистр.:
    5 окт 2009
    Сообщения:
    125
    Симпатии:
    47
    Это разные вещи, в вашем коде Вы сами задаете что выполнять, а здесь просто обнуление формы.