JavaScriptでHTMLオブジェクト要素のデータ属性値を変更するにはどうすればよいですか?
これが私がやろうとしていることです
<object type="text/html" id="htmlFrame" style="border: none;" standby="loading" width="100%"></object>
var element = document.getElementById("htmlFrame");
element.setAttribute("data", "http://www.google.com");
そしてjqueryで:
$('element').attr('some attribute','some attributes value')
すなわち
$('a').attr('href','http://www.stackoverflow.com/')
これは動作します:
<html>
<head></head>
<body>
<object type="text/html" id="htmlFrame" style="border: none;" standby="loading" width="100%"></object>
<script type="text/javascript">
var element = document.getElementById("htmlFrame");
element.setAttribute("data", "attributeValue");
</script>
</body>
</html>
これをファイルに入れ、Webブラウザーで開くと、javascriptが実行され、「data」属性+値がオブジェクト要素に追加されます。
注意: HTMLソースを単純に見ると、属性は表示されません。これは、動的にレンダリングされたDOMではなく、ブラウザがWebサーバーによって送信された静的ソースを表示しているためです。 DOMを検査するには、 Firebug などのツールを使用します。これにより、ブラウザがレンダリングしたDOMが表示され、追加された属性を確認できます。
Firefox + FirebugまたはGoogle Chromeを使用して、ページの一部を右クリックし、「要素の検査」を実行できます。これにより、レンダリングされたDOMのビューが表示されます。
JavaScriptでは、Element.datasetを使用してデータ属性に値を割り当てることができます。
例えば:
avatar.dataset.id = 12345;
リファレンス: https://developer.mozilla.org/en/docs/Web/API/HTMLElement/dataset
document.getElementById("PdfContentArea").setAttribute('data', path);
OR
var objectEl = document.getElementById("PdfContentArea")
objectEl.outerHTML = objectEl.outerHTML.replace(/data="(.+?)"/, 'data="' + path + '"');
Hostオブジェクト_<object>
_の動作は、ECMA262実装依存であり、setAttribute()
メソッドによる属性の設定が失敗する可能性があるためです。
2つの解決策があります。
ソフト:_element.data = "http://www.google.com";
_
hard:DOMツリーからオブジェクトを削除し、データ属性が変更された新しいオブジェクトを作成します。
次のコードは、jqueryを使用すると機能します
$( "object" ).replaceWith('<object data="http://www.google.com"></object>');