Даже если разместить его правильно, то толку от него будет не много т.к. выполнится он сразу в момент загрузки, а при загрузке в инпуте ничего нет, поэтому степень будет равна пустой сроке, что эквивалентно 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>