Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Получение значения для возведения в степень. (https://javascript.ru/forum/events/46639-poluchenie-znacheniya-dlya-vozvedeniya-v-stepen.html)

Blondinka 17.04.2014 20:28

Получение значения для возведения в степень.
 
Добрый день. Не могу найти ошибку в коде. В результате вычислений, независимо от введённых данных, получается "1".
<html>
<head>
<script type='text/javascript'> 
var b = document.getElementById("val");
var a = Math.pow(3,b);
</script>
</head>
<body>
<input id="val" type="text"/>
<input type="button" onclick="alert(a)"/>
</body>
</html>

Octane 17.04.2014 20:34

Цитата:

Сообщение от Blondinka
var b = document.getElementById("val");

var b = document.getElementById("val")*!*.value*/!*;

и скрипт должен выполнятся после того, как элемент появляется в документе

Blondinka 17.04.2014 20:59

Спасибо, но всё-равно не работает. После добавления .value, выдаёт undefined.

jsnb 18.04.2014 03:52

Даже если разместить его правильно, то толку от него будет не много т.к. выполнится он сразу в момент загрузки, а при загрузке в инпуте ничего нет, поэтому степень будет равна пустой сроке, что эквивалентно 0 и получится в алерте всё та же единица.
Как вариант можно обернуть весь код в функцию и ее вызывать по клику:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<input id="val" type="text"/>
<input type="button" onclick="pow()"/>
<script type='text/javascript'> 
function pow() {
  var b = document.getElementById("val").value;
  var a = Math.pow(3,b);
  alert(a);
}
</script>
</body>
</html>

Blondinka 18.04.2014 09:53

<html>
<head>
</head>
<body>
<input id="val" type="text"/>
<input type="button" onclick="alert(a)"/>
<script type='text/javascript'> 
var b = document.getElementById("val").value;
var a = Math.pow(3,b);
</script>
</body>
</html>


Теперь, при вводе любых значений, результат = 1.

Blondinka 18.04.2014 10:01

Ой, спросоня не обновила страницу(
Спасибо jsnb, всё работает.


Часовой пояс GMT +3, время: 23:03.