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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

596閲覧

innerHtmlが正しく動作しない

URON

総合スコア20

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2017/11/22 13:00

編集2017/11/22 13:01

Div要素をcontenteditable="true"で編集できるようにしてマークダウンエディタを作りたいのですが、innerHtmlの動作がわからないところがあったので質問します。

文字が入力されるとdiv要素(IDはMyEditableId)の文字をMarked.jsでHTMLに変換して、innerHtmlでdiv要素にセットしてます。

しかし、innerHtmlをしてもマークダウンの文のままでhtmlとして表示はされてません。。。
でも、ちゃんとhtmlには変換できているようなので謎です。

どうやったら、htmlに変換された状態で表示されるか教えてください。

ちなみにSimpleMDEのようなものを目指してます。

html

1<!DOCTYPE html> 2<html> 3<head> 4<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 5<script src="http://cdnjs.cloudflare.com/ajax/libs/marked/0.3.2/marked.min.js"></script> 6<script type="text/javascript"> 7 8$(document).ready(function() { 9 $('#MyEditableId').on('DOMSubtreeModified propertychange', function() { 10 var md = marked($('#MyEditableId').html()); 11 12 $('#MyEditableId').innerHtml = md; 13 14 }); 15 16}); 17 18</script> 19</head> 20<body> 21 22 <div id="MyEditableId" contenteditable="true" style="width:300px;height:300px;background-color: gray;"> 23 </div> 24 25</body> 26</html> 27

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/11/22 13:23

ぱっとみ実装が無限ループに見えるのだが
URON

2017/11/22 14:15

自分もそう思ってたのですが、よくわかりません。。具体的にどこらへんが問題なのでしょうか?
KSwordOfHaste

2017/11/22 17:47 編集

同じ要素のinnerHTMLをmarkedして自分自身に設定すると無限ループになるのではないでしょうか?asahina1979さんはそう指摘しているような気が。ところでイベントハンドラーの関数本体では$(this)を使った方がtypo防止になるのでは?
guest

回答1

0

ベストアンサー

JavaScript

1$('#MyEditableId').innerHtml = md;

innerHtml ではなく、innerHTMLですが、$('#MyEditableId') はjQueryオブジェクトなので、innerHTMLを持ちません。

JavaScript

1document.getElementById('MyEditableId').innerHTML = 'replaced';

Re: URON さん

投稿2017/11/22 13:39

編集2017/11/22 13:42
think49

総合スコア18162

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問