アプリ版:「スタンプのみでお礼する」機能のリリースについて

入力した文字をalertで表示するスクリプトを作っています。
以下、IEとOperaでは動作しますが、FirefoxとGoogle Chromeでは動作しません。
書き方が悪いのでしょうか?


<html>
<head>
<script language=JavaScript>
<!--
function test(){
alert(input1.value);
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<input type="text" name="input1">
<input type="button" value="テスト" onClick="test()">
</html>

A 回答 (3件)

#2さんも指摘の通りnameはユニークを保証されていませんので取り扱いには


注意が必要です

トラディショナルなやりかたとしてはこんな感じもあります。
inputはformの子要素として処理した方がやりやすいでしょう。

<script>
function test(obj,nam){
alert(obj.form.elements[nam].value);
}
</script>
<form>
<p>
<input type="text" name="input1">
<input type="button" value="テスト" onClick="test(this,'input1')">
</p>
</form>
    • good
    • 1

書き方が悪い、といえば悪いです。


nameよりidを使ってdocument.getElementById("input1").valueとかを推奨します。
で、なぜ動作しないかですが、
たしかFirefoxのalert()は引数なしを認めていないはずなんですよね。
#1様のように書くならいいんですが、質問者様の記述だと
Firefoxでは値を取ってくれません。
IEやオペラは頑張ってとってるようですが・・・
で、そうなるとinput1.valueの中身はundefinedとなるので
空扱いをされてアラート関数が呼び出されない。
たしかそういう解釈だったと思います。
    • good
    • 0

alert(document.getElementsByName("input1")[0].value);

    • good
    • 0
この回答へのお礼

皆様、まとめてのお礼で失礼します。

皆様の回答で、Firefoxでも動作するようになりました。
根本的に、JavaScriptから各要素を指定する方法が分かっていませんでした。
nameもIDも同じ意味だと思い込んでいました。
nameの場合は配列で指定するなど、勉強になります。ありがとうございました。

お礼日時:2010/04/23 13:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!