- ベストアンサー
urlデータの出力方法について
- Javascriptを使用して、HTMLファイル1のフォーム「registerForm」に入力されたurlデータのテキストをHTMLファイル1のdivタグ「contents」に出力する方法がわかりません。
- 上記のスクリプトでは動作しませんでした。
- 何か間違っている部分はありますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> <script> > gettext = document.location.search; > gettext = gettext.substring(1, gettext.length); > // document.receive.textfield.value = decodeURI(gettext); > alert(gettext); > </script> > > 以上のコードでアラートに出力できたのですが、コメントアウトしてるスクリプトでtextareaであるname属性がtextfieldにテキストとして出力したいんです。 > > FC2のホームページでformタグを使いたいので、調べてみたんですが、上のようなスクリプトになりました。 > > どうしたら良いでしょうか? name="receive"なフォームがあって、 その中にname="textfield"なテキストエリアがあるなら document.receive.textfield.value = decodeURI(gettext); で設定できます。
その他の回答 (3)
- Picosoft
- ベストアンサー率70% (274/391)
ちなみに、 alert(変数名); と書くことで、その時点での変数の中身を確認できたりしますので、 バグ探しや動作チェックの際にご活用ください。
- Picosoft
- ベストアンサー率70% (274/391)
よく見たら間違いだらけですな……。 × m = document.getElementsByName("registerForm").value; ○ m = document.getElementsByName("registerForm")[0].someTextbox.value; //(テキストボックスのnameがsomeTextboxの場合) まず、getElementsByName関数は配列を返す("Elements"と複数形になっていますよね?)ので、 配列のどの要素を使うかを指定する必要があります。 (「配列とは?」等については調べてくださいな) また、フォームは複数の入力項目(テキストボックスとかチェックボックスとか)から構成されています。 ですから、「フォームに入力されたURLデータ」ではなく、 「フォームの○○○というテキストボックスに入力されたURLデータ」と指定する必要があります。 なので、 document.getElementsByName("registerForm")[0].value ではなく document.getElementsByName("registerForm")[0].someTextbox.value と書く必要があります。 こう書くとテキストボックスの中身を取得することができます。 × gettext = m.location.search; これは何がしたいのかよくわかりませんが、 location.searchはブラウザのURLバーに入力されたURLのクエスチョンマーク以降を取得するために使うものです。 文字列に対して使えるものではありませんので、m.locationという書き方はできません。 ? mystr = string(n); どこかにstringという関数があるのでしょうか? 「mystrにnを文字列として入れたい」ということであれば、 mystr = n; でできます。 (decodeURI関数は文字列で結果を返すので、nはもともと文字列です) × for (i = 0; i = 2; i++) { ○ for (i = 0; i < 2; i++) { //(2回ループする場合。3回ループしたいならi <= 2かi < 3) 詳しい説明は省きますが、最初の書き方だと無限ループになります。 for (i = 0; i < 2; i++) { と書くことで、「i < 2が成り立つ間はループする」という意味になります。 (ちなみに、「iと2が等しい」という条件にしたい場合はi == 2と書く必要があります) △ var targetstr = mystr.substr(j, k); //ここでtargetstrに文字列を入れたのに…… targetstr = document.createTextNode(targetstr); //ここでtargetstrにオブジェクトを入れている JavaScriptの変数は何でも入るのでこのような書き方もできますが、 「この変数はある時は数値、ある時は文字列、ある時はオブジェクト」というような書き方は バグの温床となります。 変数の役割や型は、一度決めた後は変えない方が安全です。 × document.receive.id("contents").value = mainobj.appendChild(targetstr); ○ mainobj.appendChild(targetstr); ある要素に子要素を追加するにはappendChild関数を呼ぶだけでOKです。 appendChild関数の戻り値を使う必要はありません。
お礼
丁寧な説明有り難うございます。 なんか混乱してきたので整理します。 <script> gettext = document.location.search; gettext = gettext.substring(1, gettext.length); // document.receive.textfield.value = decodeURI(gettext); alert(gettext); </script> 以上のコードでアラートに出力できたのですが、コメントアウトしてるスクリプトでtextareaであるname属性がtextfieldにテキストとして出力したいんです。 FC2のホームページでformタグを使いたいので、調べてみたんですが、上のようなスクリプトになりました。 どうしたら良いでしょうか?
- Picosoft
- ベストアンサー率70% (274/391)
詳しい部分については見ていませんが、とりあえず1点ほど。 JavaScriptは大文字小文字を区別します。 × document.getelementbyid("contents"); ○ document.getElementById("contents"); 正しい関数名を調べた上で、大文字小文字を正しいものに直してください。
お礼
ありがとうございます。直しました。 まだ間違いがあるみたいです(泣)
お礼
ありがとうございます。 おかげさまで、望んでた結果が得られました。