• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:urlデータのHTMLファイルへの出力)

urlデータの出力方法について

このQ&Aのポイント
  • Javascriptを使用して、HTMLファイル1のフォーム「registerForm」に入力されたurlデータのテキストをHTMLファイル1のdivタグ「contents」に出力する方法がわかりません。
  • 上記のスクリプトでは動作しませんでした。
  • 何か間違っている部分はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.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); で設定できます。

walk-craftsman
質問者

お礼

 ありがとうございます。  おかげさまで、望んでた結果が得られました。

その他の回答 (3)

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.3

ちなみに、  alert(変数名); と書くことで、その時点での変数の中身を確認できたりしますので、 バグ探しや動作チェックの際にご活用ください。

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.2

よく見たら間違いだらけですな……。 × 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関数の戻り値を使う必要はありません。

walk-craftsman
質問者

お礼

 丁寧な説明有り難うございます。  なんか混乱してきたので整理します。 <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)
回答No.1

詳しい部分については見ていませんが、とりあえず1点ほど。 JavaScriptは大文字小文字を区別します。  × document.getelementbyid("contents");  ○ document.getElementById("contents"); 正しい関数名を調べた上で、大文字小文字を正しいものに直してください。

walk-craftsman
質問者

お礼

 ありがとうございます。直しました。  まだ間違いがあるみたいです(泣)

関連するQ&A

専門家に質問してみよう