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で質問しましょう!
似たような質問が見つかりました
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- Visual Basic(VBA) Selenium Basicの件 5 2023/04/10 20:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jQueryでシンセサイザーを作っ...
-
二次元配列を使って順位をだす...
-
プログラミング 学習
-
Cookieに保存されない
-
API連携のプログラミングについ...
-
ジャバスクリプトについて。
-
オブジェクトから任意のプロパ...
-
スマホ上で、左右スワイプで次...
-
追加ボタンを押した際に ok ボ...
-
HTMLでサブフレームから親のス...
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
-
メールフォームの日付入力フォ...
-
iOSのみダブルタップが必要
-
jsで質問です。 displayプロパ...
-
var exports = exports || {}; ...
-
HTMLタグに複数のクラスを設定...
-
Googleフォームで選択肢に応じ...
-
変数名をどのようにつけるのが...
-
ボタンを押したあとに画像を表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.openでタイトル名の指定
-
○歳△ヶ月と×日を計算してくれる...
-
時間帯によって背景画像を変える
-
なぜ、ジャバスクリプトが表示...
-
document.open()の意味とは
-
前のページに戻るとページトッ...
-
for文のiを使ってリンク先のア...
-
HpのFlashで,ブロック回避の方...
-
JavaScriptで乱数+乱数の計算結...
-
カウントダウン JavaScript の ...
-
来年の今日の曜日・・・?
-
「分」単位で加算(減算)したい。
-
javascriptをはじめて勉強して...
-
javascriptとphpの連携で疑問
-
ウェブ上にキーボードを作りた...
-
初歩的なことなんですけど
-
コンマとクオーテーションマー...
-
JavaScriptでFirefox使用者の閲...
-
innerHTMLにて設定した情報を再...
-
document.openの意味
おすすめ情報