2016-09-15 3 views
0

Мне любопытно, как правильно использовать несколько функций с переменными в одном файле JavaScript. Кажется, я не понимаю правильного синтаксиса.Как иметь несколько функций JavaScript с переменными в одном файле?

Я пытаюсь воспроизвести пример с сайта randomsnippets.com, но хотел бы, чтобы другие области формы имели возможность добавить больше. Я не хочу иметь кучу скриптовых тегов или js-файлов, если на то пошло!

Так резюмировать, я хотел бы что-то вроде этого

variable a = value 
variable b = value 
function name(something){ 
stuff for variable a 
} 
function name(something){ 
stuff for variable b 
} 

Любая помощь очень ценится!

<script> 
 
     var counter = 1; 
 

 
    var limit = 3; 
 

 
    function addInput(divName){ 
 

 
     if (counter == limit) { 
 

 
       alert("You have reached the limit of adding " + counter + " inputs"); 
 

 
     } 
 

 
     else { 
 

 
       var newdiv = document.createElement('div'); 
 

 
       newdiv.innerHTML = "Entry " + (counter + 1) + " <br><input type='text' name='myInputs[]'>"; 
 

 
       document.getElementById(divName).appendChild(newdiv); 
 

 
       counter++; 
 

 
     } 
 

 
    } 
 
    </script> 
 
<form method="POST"> 
 

 
    <div id="dynamicInput"> 
 

 
      Entry 1<br><input type="text" name="myInputs[]"> 
 

 
    </div> 
 

 
    <input type="button" value="Add another text input" onClick="addInput('dynamicInput');"> 
 

 
</form>

+3

В чем проблема? – epascarello

+1

Просто убедитесь, что вы используете разные имена, и вы должны быть в порядке с несколькими функциями. – Bergi

+1

Как правило, старайтесь избегать глобальных привязок. Вы можете хранить ссылки на * counter * и * limit *, используя закрытие. – RobG

ответ

0

Я не знаю, что я получил вашу проблему правильно. Я предполагаю проблему с глобальной переменной и пытаюсь дать решение. Если бы я был вами. Я приму такой подход. Использование глобальной переменной не является хорошим решением. Когда страница получает обновления, переменные будут сброшены. Тогда точности не будет. То, что я предлагаю, это получить кол-во входов на лету.

var limit = 3; 

function addInput(divName){ 

    var counter = 1; 
    counter=$("#"+divName).children("input").length; 

if (counter == limit) { 

    alert("You have reached the limit of adding " + counter + " inputs"); 

} 

else { 

    var newdiv = document.getElementById(divName); 

    newdiv.innerHTML = newdiv.innerHTML+"<br/>Entry " + (counter + 1) + " <br><input type='text' name='myInputs[]'>"; 

    document.getElementById(divName).appendChild(newdiv); 

    counter++; 

} 

} 
Смежные вопросы