js функция (нуб-вопрос)
Привет,
вопрос в следующем, если функция выглядит так: function plus() { var num1, num2, result; num1 = document.getElementById('n1').value; num2 = document.getElementById('n2').value; num1 = parseInt(num1); num2 = parseInt(num2); result = num1+num2; document.getElementById('out').innerHTML = result; }; То всё работает, делаю точно такую же на минус, всё ок. Но можно ли вынести переменные за функцию ? Если делаю так: var num1, num2, result; num1 = document.getElementById('n1').value; num2 = document.getElementById('n2').value; num1 = parseInt(num1); num2 = parseInt(num2); result = num1+num2; document.getElementById('out').innerHTML = result; function plus() { result = num1+num2; }; То нефига не работает, насколько я понял, если переменных нет внутри функции, то она ищет их снаружи ? Они же получаются объявлены до нее, почему она не хочет работать. То есть как вообще делают в таких ситуациях, если допустим две похожие функции как эти ? |
Цитата:
|
Цитата:
т.е. две функции почти одинаковые, за исключением одного знака, я спросил можно ли как-то вынести одинаковую часть и сократить код в самих функциях, и как вообще в таких случаях делают опытные :) |
Цитата:
function plus() { result = num1+num2; }так она ведь бесполезна. Это должно быть к примеру так ..... document.getElementById('out').innerHTML = plus(); function plus() { return num1+num2; } Хотя так поступать в данном случае не стоит, функция должна принимать аргументы, с которыми производить операцию, возвращая результат. А прописать до нее все, а затем заставить сложить ранее определенное, в этом смысла нет. Цитата:
function operation(a, b, o) { return o ? a - b : a + b } alert(operation(12, 7)) alert(operation(12, 7, 1)) |
Цитата:
ввиду: var num1, num2, result; num1 = document.getElementById('n1').value; num2 = document.getElementById('n2').value; num1 = parseInt(num1); num2 = parseInt(num2); result = num1+num2; document.getElementById('out').innerHTML = result; function plus() { result = num1+num2; }; function minus () { result = num1-num2; } Цитата:
Я закинул первоначальный код в планкер, чтобы было понятней что я хочу :) : https://plnkr.co/edit/yaCgZZQ8MWqKiIyByhrN?p=preview |
Цитата:
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Цитата:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="text" id="n1"> <input type="text" id="n2"> <br><hr /> <button onclick="plus()">PLUS</button> <button onclick="minus()">MINUS</button> <hr> <p id="out">Result:</p> <script>function plus() { var num1, num2, result; num1 = document.getElementById('n1').value; num2 = document.getElementById('n2').value; num1 = parseInt(num1); num2 = parseInt(num2); result = num1+num2; document.getElementById('out').innerHTML = result; }; function minus() { var num1, num2, result; num1 = document.getElementById('n1').value; num2 = document.getElementById('n2').value; num1 = parseInt(num1); num2 = parseInt(num2); result = num1-num2; document.getElementById('out').innerHTML = result; }; </script> </body> </html> |
выносить за функцию можно но вот это
num1 = document.getElementById('n1').value; будет выполняться при загрузке когда инпуты пусты. вынести можно сами элементы, а в функции получать их актуальный на текущий момент value <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="text" id="n1"> <input type="text" id="n2"> <br><hr /> <button onclick="plus()">PLUS</button> <button onclick="minus()">MINUS</button> <hr> <p id="out">Result:</p> <script> var num1 = document.getElementById('n1'), num2 = document.getElementById('n2'), out = document.getElementById('out'); function plus() { result = num1.value*1+num2.value*1; out.innerHTML = result; } function minus() { result = num1.value*1-num2.value*1; out.innerHTML = result; } </script> </body> </html> |
Цитата:
|
Цитата:
value это и есть значение в форме. |
Часовой пояс GMT +3, время: 18:06. |