![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
divにinnerHTMLでセットすると一行分HTMLに表示されてしまう
Javascriptというよりcssの気もしますが。
IE6で確認してます。
<body bgcolor="#999999">
<div id="test_area"></div>
このようにある場合、初期表示では行が表示されないのですが、
Javascriptで何か入れて、クリアしても一行分表示されてしまいます。
Javascriptで入れた時もずれないで欲しいのですが、何か良い方法はないでしょうか?
ちなみに初期化はscriptでこのようにしてます(dojo.byIdですが、getElementbyIdと同じ)。
よろしくお願いします。
dojo.byId("test_area").innerHTML = "";
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?8acaa2e)
No.5ベストアンサー
- 回答日時:
<html>
<body bgcolor="#999999">
a
<div id="test_area">hh</div>
b<br>
<input type="button" value="Delete 'b'" onClick="delNode('test_area')">
<input type="button" value="plus 'abc'" onClick="document.getElementById('test_area').innerHTML='abc'">
<script>
function delNode(s){ ob=document.getElementById(s); while( ob.hasChildNodes() ) ob.removeChild( ob.firstChild ); }
</script>
ということで削除してから、同じところに'abc'を追加します
この回答への補足
pipiさん、ありがとうございます。
申し訳ありません、質問の意図が伝わっておりませんでした。
ご教授いただきましたソースと私のソースはほぼ同等で以降の動作も同じでした。
<div id="test_area">hh</div>のようにデフォルトで値をセットすることで、必ず一行分表示されたレイアウトになると思います。hhを取り除くと全く何もセットされず、
a
b
と表示されると思います。この状態に常にしたかったのですが、ご教授いただいたscriptの方もクリアしても
a
b
と表示されると思います。
そこで自己解決しましたが、<div id="tet_area" style="visibility:hidden"></div>とする事で解決しました。・・申し訳ありません。(この領域はDialogで出力する為使いまわされます。DojoのDialogでshowをしている為、表示等も問題なく動きましたが、他の用途ではこれが解決策とはいえないかもしれません。)
解説いただいた、div領域のテキストノードにnullが残ってしまう為、改行表示される事で理解できました。
お騒がせしました、ありがとうございます。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?8acaa2e)
No.4
- 回答日時:
>domNodeも消さないといけないでしょうか?この領域には色々使いまわされるので、要素自体はクリアしたくないのですが・・。
だめでしょうか?意味がわかりません!
dojo.byId("test_area").innerHTML = "";
にした時点で要素自体なくなっているでしょ!?
提示した
function delNode(s){ ob=document.getElementById(s); while( ob.hasChildNodes ) ob.removeChild( ob.firstChild ); }
は、div要素の子をすべて消すことであって,
親のdivは消していない。
innerHTMLを使い""で何も無いようにしているかもしれないが
実際には、divの中にテキストノードがnullの状態で残っています
これが空白行のそもそもの原因です
それを「要素自体はクリアしたくない」と表現するのであれば
いったい何を残しているの?
No.3
- 回答日時:
TabContainerのサイズは指定してありますか?
おそらく、ページの真ん中にtabContainerをおいたところ、中身がページが横スクロールするくらい伸びてしまうという現象じゃないですか?
その場合、style="width:80%"のように指定してみてください。
また、高さを指定していないと正常にタブ内の内容が表示されない場合があります。理想的なのはheight:120pxのような絶対指定ですが、doLayout="false"を使うことにより、タブの高さがタブの内容に応じて変化するようにできます。
ただし、自分の確認した環境ではIEでの動作が少々怪しいところがあります。
絶対指定しない場合:
<div dojoType="dijit.layout.TabContainer" doLayout="false" id="tab_area">
サイズ指定する場合:
<div dojoType="dijit.layout.TabContainer" style="width:120px;height:400px;" id="tab_area">
Dijitは、dojoTypeなどの独自要素を追加しなければならない代わりに、jqueryやscriptaclousのように、スクリプトのみで使うためのHTML要素を追加しないですむのが最大の特徴ですね。
この回答への補足
ありがとうございます。
dojoを利用している方が少ない為、div領域のクリアだけにスポットを当て質問してましたが、dojoを使われてるようでご助言頂ければ幸いです。
実はdojoTypeは、TabContainerでは無く、モーダルのDialog(HTML書式)をinnerHTMLでセットしています。大まかなながれですが、画面上にいくつかのボタンがあり、それをクリックする事でこのDiv領域にモーダルの送信フォームをセット・表示しています。
このdiv領域のクリアタイミングは、データをsubmitした時、DiaLogをキャンセルした時です。
既に書きましたが、親画面でこの領域を既に記述しており、初期表示状態(F5で更新をかけても)でも既に存在しているのですが、その時は画面上では改行はされません。一度でもこのDiaLogを開くと一段ずれてしまいます。
また、できれば他言語で言えば、この領域がnullの状態(現在の初期表示状態)であってほしいのですが・・。
本当にありがとうございます。
No.2
- 回答日時:
dojoの問題ではないと思います。
もしかして、TabContainerなどのタブの中身をinnerHTMLで内容を書き換えるみたいな処理をしていませんか?
ありがとうございます。innerHTMLで内容を書き換えています、HTML形式の入力Formを入れております。
ちなみにクリアする時はこのようにしております。
dijit.byId("test_area").destroy();
dojo.byId("test_area").innerHTML = "";
一行目はdiv要素をクリアする為に書いているのですが、
実際元親ファイルに書かれている<div id="test_area"></div>に空文字をセットしたら、きれいになると思ったのですが・・。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?8acaa2e)
No.1
- 回答日時:
<html>
<body bgcolor="#999999">
<p>a</p>
<div id="test_area">b</div>
<p>c</p>
<input type="button" value="Delete 'b'" onClick="delNode('test_area')">
<script>
function delNode(s){ ob=document.getElementById(s); while( ob.hasChildNodes ) ob.removeChild( ob.firstChild ); }
</script>
ありがとうございます。domNodeも消さないといけないでしょうか?この領域には色々使いまわされるので、要素自体はクリアしたくないのですが・・。だめでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
クリックで色変更後に既に変更...
-
iframe内のリンクが飛ばないの...
-
innerHTMLに入れたリンクが反応...
-
javascriptでオブジェクトの重...
-
removeEventListenerについて
-
一覧をタブメニューで絞り込ん...
-
変数名をどのようにつけるのが...
-
HTMLタグに複数のクラスを設定...
-
removeAttribute()メソッドで削...
-
document.getElementById( ).st...
-
VBScriptでXMLのデータを取得す...
-
背景色を透明化
-
バッチファイルでカウントアッ...
-
console.log結果をhtmlで表示し...
-
プルダウンとチェックボックス...
-
divにinnerHTMLでセットすると...
-
読み込んだQRコードをフォーム...
-
hiddenを使って項目の表示、非...
-
jQueryのアコーディオンメニュ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MAX関数を使ってからLEFT JOIN...
-
javascriptテキストBOX色を元に...
-
createElementで作成した要素を...
-
読み込んだQRコードをフォーム...
-
console.log結果をhtmlで表示し...
-
iframe内のリンクが飛ばないの...
-
変数内容をHTML内で表示する方法
-
getElementByIdの戻り値がnull...
-
背景色を透明化
-
自働生成される<div>タグに連番...
-
複数のリンク画像を一定時間で...
-
クリックで色変更後に既に変更...
-
removeEventListenerについて
-
IFRAMEの表示/非表示を切り替え...
-
表示・非表示のスクリプトで、...
-
タブで開いてさらにタブ内をア...
-
Jquery 親要素で順番入れ替え
-
HTML id名とjavascript変数名
-
VBScriptでXMLのデータを取得す...
-
[急ぎ] videoタグで埋め込んだm...
おすすめ情報