- ベストアンサー
JavaScriptのsyntaxについて
- JavaScriptを使用して任意の数の<input type='text' ..> タグを表示させる方法について質問です。
- 画像の上部にある「number of parts」の部分には入力する数を指定し、「inputBox()」関数を呼び出すようになっています。
- しかし、入力した数だけの入力ボックスが表示されず、なぜかコメントアウトを解除して具体的な数を入力すると正常に動作します。どこが問題なのか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> document.write() を使わずに、同じページの下側に入力ボックスを表示するには、どんなコマンドがあるのでしょうか? フルのHTMLをいちから作るのではなく、追加したい要素のみ(今回でいうとtable部)を document.createElement(~); で作って、それを現ドキュメントに 親element,appendChild(createした要素); で挿入していきます。 もしjQueryが使えるのなら、$(~).append(~) とか $(~).after(~) とかで やったほうが簡単でしょう。 これ以外にも、HTMLの都合や、挿入位置の指定方法の都合に合わせて いろんな方法がありますので、"JavaScript 要素 追加"でググってみて下さい。
その他の回答 (2)
- superside0
- ベストアンサー率64% (461/714)
> また、入力行が表示されるのは、なぜか別のページですが、これは今は気にしません。 いや、まさにそれが原因で、getElementById()に失敗しています。 document.writeした時点でドキュメントは上書きされているので そのあとは、当ドキュメント内にid=*qty"というエレメントが なくなってしまっています。 document.writeするまえに maxQty=window.document.getElementById("qty").value; を移動させればよいのですが、 そもそも元の入力フォームが消えてほしくないのなら、 document.writeを使うべきではないでしょう。
お礼
早速にご回答いただき、有難うございます。 とてもよくわかる説明で、document.write() を使うと今のページが上書きされることは初めて知りました。自分は、今のページはそのままで、その下に入力ボックスが表示されるものと思っていました。 ではdocument.write() を使わずに、同じページの下側に入力ボックスを表示するには、どんなコマンドがあるのでしょうか? よろしければ教えてください。 自分は初心者でJavaScript は始めたばかりで、jQuery や JSON についての知識はまだありませんが、上に書いたことを実現するのに必要ならば勉強するつもりです。
- maiko04
- ベストアンサー率17% (345/1956)
ならば maxQty=window.document.getElementById("qty").value; で得られたmaxQtyを表示すれば何が表示されますか? 間違いを見てもらうのではなく、自分で突き止めることをしましょう。
お礼
早速の回答有難うございます。 >maxQty=window.document.getElementById("qty").value; で得られたmaxQtyを表示すれば何が表示されますか? それは自分もやってみましたが何も表示されません。 >間違いを見てもらうのではなく、自分で突き止めることをしましょう。 自分でいろいろ考えた挙句に、自分では解決の糸口が見えないから質問しているわけです。そういう便利さを提供してくれているのがこのOKWAVEではありませんか? 人が何でも自分で問題を解決できるのなら、こんなサイトはいらないでしょう。 とにかく、あなたが回答してくれたことに対しては私はちゃんとお礼を言ったので、これ以上あなたとはかかわりたくありません。 2度と私の質問に回答しないでください。
お礼
詳しい説明の入ったご回答を頂き、有難うございます。 JavaScriptはとても奥が深いのですね。 近いうちにjQueryなども勉強したいと思いますが、取りあえずはアドバイス頂いたようにdocument.createElement() を使ってやってみます。