Utilisation XPath, vous pouvez sélectionner uniquement le texte noeud enfants de la div. Javascript brut ci-dessous.
var xpr = document.evaluate("//div/text()",document,null,
XPathResult.STRING_TYPE,
null);
console.log(xpr.stringValue);
> select this
Si vous avez un texte entrecoupé de tags:
<div>select this<strong>dfdfdf</strong>and this</div>
... vous pouvez itérer sur eux (aide convertit XPathResult en tableau)
function $x(path, context, type) {
if (!context) context = document;
type = type || XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE;
var i,item,arr=[], xpr = document.evaluate(path, context, null, type, null);
for (i=0; item=xpr.snapshotItem(i); i++)
arr.push(item);
return arr;
}
var nodes = $x("//div/text()");
nodes.forEach(function(item) {
console.log(item.textContent);
});
> select this
> and this
(testé en FF, w/firebug logging)
La fonction args sont (i, noeud), et le test est sur node.nodeName:.. $ ("div") contenu() chacune (fonction (i, noeud) { if (node.nodeName == "#text") console.log (node.textContent); }); – Chadwick
la fonction est appliquée sur le noeud. par conséquent, le mot clé 'this' est le noeud actuel. – geowa4