質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1956閲覧

javascritpでappendで要素追加すると、勝手にタグが閉じてしまいます。

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/01/31 17:52

編集2018/01/31 18:10

###■やっかいなこと
指定要素「checkbox1」の直後に

<span>を入れたい。のに、

javascriptを使うと勝手に<input>タグが閉じてしまいます。

###■ダメだったこと
下記のように書くと、、、

html

1<label> 2 <input type="checkbox" class="checkbox1" /> 3 チェック 4</label>

javascript

1<script> 2(function($){ 3$(".checkbox1").append("<span class='checkbox1-naka'></span>"); 4})(jQuery); 5</script>

なんとかcheckbox1の直後に<span>は入りました。が、

勝手に<input>のタグが閉じてしまい、困っております。

実際の動きはこちらです。
https://jsfiddle.net/nj3ss1a5/2/

inputが閉じないようにする書き方はございませんでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

append()はタグの中に挿入するメソッドなので、<input> の後に追加したい場合は$(セレクタ).after(要素やHTML)を使用します。

js

1//改行はスペース1文字分、閉じタグは「<タグ名/>」でOK 2$(".checkbox1").after(" <span class='checkbox1-naka'/>"); 3//上記と同じ 4//$(".checkbox1").after("\n<span class='checkbox1-naka'></span>");

before(), prepend(), append(), after()が基本です。ターゲット要素の該当位置にHTML要素を追加するとい意味になります。

$(ターゲット).上記メソッド(HTML要素);

似たようなメソッドでinsertBefore(), prependTo(), appendTo(), insertAfter()のようなメソッドもあります。これらは、上記基本のメソッドとそれぞれ ターゲットHTML要素 を逆に書くことができ、HTML要素をターゲット要素の該当位置に追加するという意味になります。

$(HTML要素).上記メソッド(ターゲット);

html

1<!-- ← before(), insertBefore() --> 2<div> 3 <!-- ← prepend(), prependTo() --> 4 <p>HTML</p> 5 <!-- ← append(), appendTo() --> 6</div> 7<!-- ← after(), insertAfter() -->

投稿2018/01/31 18:39

Tomak

総合スコア1652

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/31 23:40

おお、またまたお詳しいご説明を誠にありがとうございます。 その4つが基本なのですか!なるほどなるほど。 要素に入れるjavascript、マスター致しましたー!(''◇'')ゞ どうもありがとうございます。
退会済みユーザー

退会済みユーザー

2018/01/31 23:58 編集

さらに「wrapInner」も覚えました★が、、 次のような場合、どうすればいいか、お分かりになりませんでしょうか? https://jsfiddle.net/wt5t6kne/ そうなんです。 テキストエリアの内容を「response」に反映させているのですけれど、そのタイミングで<p>タグを入れようとすると、なぜか入ってくれないのです。(´;ω;`)ウゥゥ 「after」や「before」だと「response」の外に出てしまいますし…
Tomak

2018/02/02 07:22

下記URLにコメントを入れておきました。イベントについて慣れていないでしょうか? どのようなアプリを作るにしてもイベントは必ず出てきますので慣れておきましょう。 ---- https://jsfiddle.net/74nchstd/ ■初期イベント ・ロード時、読み込み時に発生。 ・JavaScriptソースコードをブラウザに読み込み時に1度だけ発生するイベント。 ・グローバルスコープの「var 変数 = 内容;」などのコードはすべてこの時に実行される。 ・「$("#response").wrapInner("<p></p>");」の箇所は初期読み込み時に1回しか実行されない ■keyupなどのユーザー操作イベント ・ユーザーがマウス、キーボード、画面タッチなどを行った時に毎回発生するイベント。 ・イベントが発生するたびに何かの処理を行いたい場合は、イベントリスナー関数を指定の要素に追加する。 ・今回はテキストエリア要素に3つのイベントリスナー関数を登録している。 ■イベントバブリング(余談) ・イベントリスナーが親要素に登録されている場合は、子要素の存在可否に関わらずイベントを捕まえることが可能。(イベントバブリング:イベントはbodyまでバブルアップします) ・例えば、Ajaxで要素を挿入する場合最初は空なので指定要素にイベントリスナーは追加できません。しかし、親要素に追加しておけば子要素のイベントを拾うことができます。
guest

0

ベストアンサー

勝手に<input>のタグが閉じてしまい

勝手にも何もinput要素は空要素なので子要素を持ちません。コードは見ていませんが設計の問題です。

【input 要素 - HTML | MDN】
https://developer.mozilla.org/ja/docs/Web/HTML/Element/Input

許可された内容 なし。これは 空要素 です。

投稿2018/01/31 18:04

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/31 18:14 編集

いえ、ほんとなのです。このjavascriptを書くと、勝手にinputが閉じるんです。ご覧くださいまし。 https://www.fastpic.jp/images.php?file=7433390307.jpg これ、どうしてなのでしょうか??
kei344

2018/01/31 18:19

appendではなくafter。
退会済みユーザー

退会済みユーザー

2018/01/31 18:33

そんなことどこでお知りになったのですか…笑 どうもありがとうございます★★★
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問