DOMで指定したエレメント内にdocument.write()で排出される文字を挿入する必要があり、実装方法に困っております……。
こんな感じです。
<div id="test"></div>
<script type="text/javascript">
function func01() {
document.write("<strong>書き込むデータ</strong>");
}
document.getElementById("test").innerHTML = func01();
</script>
これを実行しますと、当然かもしれませんが単に"書き込むデータ"がテキストでブラウザに表示されてしまい、指定したidであるtestのセクション内に出力されません。
func01()では制約上どうしてもdocument.write()を使用する必要があり、何とかこの値を<div id="test"></div>の中に書き込めないかなという状態です。
どなたかアドバイスをお願いできれば幸いです。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
No5が言うような手合いの物で、手元にscriptファイルを持って来れないというのなら、まぁdocument.writeされるであろうblockをぶっこ抜いて来るしかないね。
もしそうだとしたら
document.getElementById("test").innerHTML = func01();
とfunc01()とやらが独立したjsになっている筈だから
件のfunc01が有るjsを何かしらのblockで囲んでidを振ってgetElementByIdで取り出すのが無難じゃないかな。
そうでなくてテキスト部分としては質問文の様に繋げられているなら、funcにreturnを書く事ができない筈が無いので文字列をreturnすれば良い筈だけど・・・
No.5
- 回答日時:
察するに、
document.writeを使った何かしらのAPIがあって、
その内容は自分で変更できない…
という解釈で、一応対応策を考えてみました。
<div id="test"></div>
<script type="text/javascript">
// ↓何の変哲もないdocument.writeです
document.write('foo');
// ↓これを実行した後は…
( function( f ) {
var s = document.write;
document.write = f;
document.write.res = function() {
document.write = s;
}
})(
function() {
el = document.getElementById( 'test' );
return function( t ) {
el.innerHTML += t;
};
}()
);
// ↓id="test"に書き出される
document.write('bar');
// このメソッドを実行すると…
document.write.res();
// ↓元のdocument.writeに戻る
document.write('baz');
</script>
No.4
- 回答日時:
>制約上どうしてもdocument.write()を使用する必要があり
たぶん、あなただけがそう思っているのでは。
と言うのも、何をしたいのか、よくみると記載されていません。
innerHTMLは、テキストの代入メソッドですよね。
それに関数を指定すれば、その結果(戻り値)はテキストでないと動作しませんよね。
document.writeは、documentオブジェクトに対して書き込む命令であって、ストリームやパイプに書き込む事はできません。そこが勘違いをしています。
つまり、DOSやCでいえば標準出力に出力する関数を指定する必要があるわけです(echo or printf)。
No.2
- 回答日時:
回答1さんがいいたいことは、document.write()を使う使わないの問題ではなく、
return "<strong>書き込むデータ</strong>"
をfunc01()に「追加」したら?ということだと思うんだけど。それも禁止?
No.1
- 回答日時:
なんで書き込む文字列をreturnさせないの?
innerHTMLに代入が何事だか もうちょっと理解した方が良いのでは・・・
http://www.google.com/search?lr=lang_ja&q=javasc …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
なぜ、ジャバスクリプトが表示...
-
window.openでタイトル名の指定
-
ネスケでdocument.write
-
<HTML>文章をメモ帳に書いてブ...
-
<a>タグのテキストを取得
-
同じIDで定義した要素の配列を...
-
ASP.NETのコントロールの値をJa...
-
idを使わずにonclickで自身の要...
-
翌月を取得するGASが分かりません
-
getElementByIdを使用したグロ...
-
ActiveXobjectが作成できない
-
任意の座標をクリックさせるには
-
ASP+アクセスでのSQLコメントに...
-
Linux バイナリ実行できない "...
-
functionから別のfunctionを実...
-
GASでundefinedエラーが出ます
-
【正規表現】【javascript】CR...
-
onchangeイベントを使ってspan...
-
TABLEタグ内に入った項目の座標...
-
C# .NET DataGridView の行を追...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.openでタイトル名の指定
-
今日の月と日付の1週間後や3日...
-
○歳△ヶ月と×日を計算してくれる...
-
parseIntで戻り値がNaNになるの...
-
JavaScriptで乱数+乱数の計算結...
-
なぜ、ジャバスクリプトが表示...
-
ウェブ上にキーボードを作りた...
-
java scriptでの表示件数の制御...
-
ホームページに日付を自動更新...
-
ランダムで文字を表示
-
javaで画像をランダム表示しつ...
-
前のページに戻るとページトッ...
-
innerHTMLにて設定した情報を再...
-
ネスケでdocument.write
-
配列
-
はじめまして。wmv動画をア...
-
document.writeについて
-
htmlの中に記述している画像フ...
-
「今日の日付けを画像で表示」...
-
複数ブラウザ対応のお気に入り...
おすすめ情報