<html>
<head>
<script>
var form = document.querySelector("#id名");
</script>
</head>
<body>
<input type="text" id="{id名}">
</body>
</html>
このように書くと<body>より前だとformタグは取得できないため、
(HTMLの記述の末尾に同様の記述を行ったら読み込めます。理由は最後で)
<script>
window.onload = init;
function init(){
//ここでvar 変数をすると、この変数はこの関数の中だけでしか使えない
var form = document.querySelector("#id名");
}
</script>
このように関数の中でdocument.querySelector("#id名")の記述を書いて、window.onloadでフォームのオブジェクトを取得する関数を実行します。しかし、この書き方ではinit関数の中でしかフォームのオブジェクトを使えません。ここでスコープを利用して、
<script>
//ここで変数を定義すれば、すべての箇所で使用可能となる
var form;
window.onload = init;
function init(){
form = document.querySelector("#id名");
}
function exec(){
//他の関数の中でも取得したフォームのオブジェクトを使うことができます。
form.value = "文字列の挿入";
}
</script>
initでフォームのオブジェクトを取得して、他の関数で使用することが可能となります。
追記
<html>
<head>
<script>
var form = document.querySelector("#id名");
</script>
</head>
<body>
<input type="text" id="{id名}">
</body>
</html>
<body>より前に<script>を設置し、そこでdocument.querySelector("#id名")でフォームが取得できない理由は、<script>タグ内でdocument.querySelector()を実行しても、取得したいフォームが下に記述されており、まだ読み込まれていないので、指定したIDのフォームは存在していないことになります。
<html>
<head>
</head>
<body>
<input type="text" id="{id名}">
</body>
<script>
var form = document.querySelector("#id名");
</script>
</html>
このように取得したいフォームより後でdocument.querySelector()を読み込むと指定のフォームが取得できるようになります。
0 件のコメント:
コメントを投稿