URLエンコードでは「&」(アンパサンド)が「&」HTMLエンティティとして認識されます 質問する

URLエンコードでは「&」(アンパサンド)が「&」HTMLエンティティとして認識されます 質問する

URL で渡される文字列をエンコードしています (GET 経由)。ただし、escapeまたはencodeURIを使用するとencodeURIComponent&は に置き換えられます%26amp%3Bが、 に置き換えたいのです%26。何が間違っているのでしょうか?

ベストアンサー1

コードを見ないと、当てずっぽうで答える以外に難しいです。 に渡している文字列 (encodeURIComponent()使用する正しい方法) は、プロパティにアクセスした結果から取得されていると思います。解決策は、代わりにinnerText / textContentプロパティ値innerHTMLを取得することです。

var str, 
    el = document.getElementById("myUrl");

if ("textContent" in el)
    str = encodeURIComponent(el.textContent);
else
    str = encodeURIComponent(el.innerText);

そうでない場合は、replace()メソッドを使用して HTML エンティティを置き換えることができます。

encodeURIComponent(str.replace(/&/g, "&"));

おすすめ記事