次のhtmlとスクリプトでresultのような結果を得たいのですが、スクリプトがheadにあるとエラーが出てしまいます。
body直前にスクリプトを置けば動作はするのですが、head内で動作させるにはどうしたら良いのでしょうか?
[html]
<div id="here"></div>
[JavaScript]
function ins( id ) {
var output = document.createElement( 'span' );
output.className = 'ins';
output.innerHTML = '<p>content</p>';
var element = document.getElementById( id );
element.appendChild( output );
}
ins( 'here' );
[result]
<div id="here">
<span>
<p>content</p>
</span>
</div>
よろしければどなたかアドバイスを頂けると助かります。
よろしくお願い致します。
No.3
- 回答日時:
> オンロードイベントで確かに動作しましたが、エラーは消えませんでした。
私の手元ではエラーが出ません。
プログラムのどこかに、オンロードイベントに入れてない「ins( 'here' );」が残っていませんか?
別に重複する箇所があったので削除したところ動作しました。
ただ、このままだと関数を使って2つ以上要素を追加しようとしても、一番最後に呼び出したものに上書きされてしまうのですね…。
この関数を複数箇所で利用したいので、一先ずこちらの質問は締め切ってまた別の質問として投稿させて頂こうと思います。
ありがとうございました。
No.2
- 回答日時:
div>span>pとブロックレベルとインラインがぐちゃぐちゃなので
全部ブロックで表示すればわかりやすいかと
あと、innerHTMLでなくきちんと書いた方がよいかも
classNameが古いIEのバグでsetAttributeできないので
どうしてもclassNameを直接いじる必要があるのは残念ですけどね
<html>
<head>
<script>
function func_ins( id ) {
var output = document.createElement('span');
output.className = 'ins';
var p=document.createElement('p');
p.appendChild(document.createTextNode('content'));
output.appendChild(p);
var element = document.getElementById( id );
element.appendChild(output);
}
window.onload=function(){func_ins( 'here' )}
</script>
<style>
div#here{width:80%;background-Color:yellow;}
div#here span.ins{display:block;width:60%;background-Color:aqua;}
div#here span.ins p{width:40%;background-Color:lime;}
</style>
</head>
<body>
test1
<div id="here"></div>
test2
</body>
</html>
この回答への補足
回答ありがとうございます。
短く書くためにinnerHTMLの内容を<p>content</p>としましたが、ここに追加する内容はp要素に限定するものではなく、スクリプトなども追加する事を考えているのでinnerHTMLにしています。
説明不足で申し訳ないです。
classNameについては目印程度の意味合いで付けているので無くても大丈夫なのですが、付けない方が良いでしょうか…?
No.1ベストアンサー
- 回答日時:
ins( 'here' ); をオンロードイベントで実行すれば動作します。
<html>
<head>
<script>
function ins( id ) {
var output = document.createElement( 'span' );
output.className = 'ins';
output.innerHTML = '<p>content</p>';
var element = document.getElementById( id );
element.appendChild( output );
}
window.onload = function() {
ins( 'here' );
}
</script>
</head>
<body>
<div id="here"></div>
</body>
</html>
この回答への補足
回答ありがとうございます。
オンロードイベントで確かに動作しましたが、エラーは消えませんでした。
element.appendChild( output );
Uncaught TypeError: Cannot read property 'appendChild' of null
このエラーを解消する形で動作させたいのですが、可能でしょうか…?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript 画像の表示位置 3 2022/12/23 08:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
createElementで作成した要素を...
-
[急ぎ] videoタグで埋め込んだm...
-
jqueryで要素の中身を要素の外...
-
cssでdisplay:noneを指定した時...
-
バッチファイルでカウントアッ...
-
背景色を透明化
-
HTMLとJavaScriptで作ったタイ...
-
読み込んだQRコードをフォーム...
-
変数内容をHTML内で表示する方法
-
ネストされたハッシュの値から...
-
checkboxにチェックを入れると...
-
iframe内のリンクが飛ばないの...
-
classList で、class名が付かな...
-
html内でJavaScriptで参照先を...
-
HTMLタグに複数のクラスを設定...
-
ディレクトリ内画像表示
-
CSS のみのタブ切り替えについて
-
jQueryで同じクラス名のものを...
-
jQueryでのドラッグアンドドロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
javascriptテキストBOX色を元に...
-
読み込んだQRコードをフォーム...
-
createElementで作成した要素を...
-
removeEventListenerについて
-
タブで開いてさらにタブ内をア...
-
IFRAMEの表示/非表示を切り替え...
-
変数名をどのようにつけるのが...
-
表示・非表示のスクリプトで、...
-
クリックで色変更後に既に変更...
-
jQueryでクリックされた要素のi...
-
HTMLとJavaScriptで作ったタイ...
-
console.log結果をhtmlで表示し...
-
HTMLタグに複数のクラスを設定...
-
指定したパスが現URLに含まれて...
-
iframe内のリンクが飛ばないの...
-
背景色を透明化
-
変数内容をHTML内で表示する方法
-
テキストエリア内の一部の文字...
-
classの中の<a>タグにidを追加
おすすめ情報