親自体を持つ要素の innerHTML を取得したい。私は element.innerHTML を使用しているため、親ではなく要素内に存在する値を返しています。JavaScriptでこれを行う方法はありますか?
注:これにはjQueryを使用したくないことに注意してください。
親自体を持つ要素の innerHTML を取得したい。私は element.innerHTML を使用しているため、親ではなく要素内に存在する値を返しています。JavaScriptでこれを行う方法はありますか?
注:これにはjQueryを使用したくないことに注意してください。
試してください - http://jsfiddle.net/PF68B/
var content = document.getElementById("elem").parentNode.innerHTML;
親タグ付きのコンテンツが必要な場合 - http://jsfiddle.net/PF68B/1/
var content = document.getElementById("elem").parentNode.innerHTML;
var parentTag = document.getElementById("elem").parentNode.tagName.toLowerCase();
...
アップデート
すべての属性を持つ親ノードが必要な場合 - http://jsfiddle.net/PF68B/4/
var content = document.getElementById("elem").parentNode.innerHTML;
var parentTag = document.getElementById("elem").parentNode.tagName.toLowerCase();
var el = document.getElementById("elem").parentNode;
var nodes=[], values=[];
for (var attr, i=0, attrs=el.attributes, l=attrs.length; i<l; i++){
attr = attrs.item(i)
nodes.push(attr.nodeName);
values.push(attr.nodeValue);
}
var parentAttr = '<' + parentTag;
for ( var i = 0; i < nodes.length; i++ ) {
parentAttr += ' ' + nodes[i] + '="' + values[i] + '"';
}
parentAttr += '>' + content + '</' + parentTag + '>';
.outerHTMLプロパティを探していると思います。Firefox
ただし、古いバージョン (バージョン < ) ではサポートされていない11.0
ため、代わりに次のスクリプトを使用できます。
var tmpParent = document.createElement('div');
//Appending moves elements from its parents.
//For safety, clone was used instead of original node.
var cloneElem = yourDomElement.cloneNode();
cloneElem.innerHTML = yourDomElement.innerHTML;
tmpParent.appendChild( cloneElem );
//Markup
var elementMarkup = tmpParent.innerHTML;
console.log( elementMarkup );