私は文字列を持っていて、この文字列をinnerHTMLプロパティに書き込んで、後でこれらの2つの文字列を比較したいと思います。その後、シーケンスáé
がAEので、文字列に変換されますので、私は上記の文字列のための偽の結果を得るため、このコードを実行することにより、比較innerHTMLに何かを書くと、どのようにして正確なコピーバックが得られますか?
if (output.innerHTML == myString) {
...
}
を行う
var myString = "<div>my message with accented áé characters</div>"
var output = document.getElementById("first")
output.innerHTML = myString
:Basicaly私はこのような何かをしたいです一致しません。 私が望む結果が得られた最も近いのは、小さなハックを使用して一時的な要素書き込みを作成し、そこから抽出したデータと比較することでした。それはうまく動作しますが、このようにするのは正しいとは感じません。
var tmp = document.createElement('div');
tmp.innerHTML = myString
if (output.innerHTML == tmp.innerHTML) {
...
}
だから私の質問は次のとおりです。
- は、私はinnerHTMLプロパティに書いたものの正確なコピーを取り戻すためにどのようにどのような方法はありますか?
- か、データを変換する簡単な方法はありますか?
- これは私のハックです。このようなことを行うにはどうすればいいですか?
文脈に入れると、データを生成してからJSONに変換します。このJSON出力は、JSON.parse()
によってjavascriptで読み込まれ、結果はさまざまなタグに挿入されます。新しいデータが古いデータと異なる場合は、他のアクションも行われるため、最初に違いを確認しています。 私はunescape()
のようなものも試しましたが、この種のエスケープでは動作しません。また、生の文字列をMap
に保存して比較するオプションもあります。 ;ここで
は短い答えは何である私もJSFiddle
<div id="first"> </div>
<div id="resultFirst"></div>
<br />
<div id="second"> </div>
<div id="resultSecond"></div>
<script>
var myString = "<div>my message with accented áé characters</div>"
var output = document.getElementById("first")
var result = document.getElementById("resultFirst")
output.innerHTML = myString
if (output.innerHTML == myString) {
result.innerText = "TRUE " + myString
} else {
result.innerText = "FALSE " + myString
}
var output2 = document.getElementById("second")
var result2 = document.getElementById("resultSecond")
var tmp = document.createElement('div');
tmp.innerHTML = myString
output2.innerHTML = myString
if (tmp.innerHTML == output2.innerHTML) {
result2.innerText = "TRUE " + tmp.innerHTML
} else {
result2.innerText = "FALSE " + tmp.innerHTML
}
</script>
これを行う必要がある理由を説明してください。 – Soviut
innerHTMLを設定しているとき、 'á é'を 'áé'に折りたたんでいるので、あなたの文字列と決して等しくないことが保証されます。 – mkaatman
DOMは書き込み専用にする必要があります。 – PeterMader