[新着] Webテンプレートを仮オープンしました
var spans = document.getElementById("foo").getElementsByTagName("SPAN");
for(var i = 0, len = spans.length; i < len; i++){
適当な処理
} みたいなループ処理に、ひとつだけあるIMG要素にも同じ処理を施したいとします。spans.push(document.getElementById("foo").getElementsByTagName("IMG")[0])みたいに出来たら楽だ、と思ったのですが、当然エラーになります。何かうまい方法document.getElementById("foo").getElementsByTagName("*")以外で。HTMLSpanElementとかHTMLImageElementとかの集合を、配列みたいに// Gecko、Opera、Safari
/*
if (document.implementation &&
document.implementation.hasFeature ('Traversal', '2.0'))
*/
{
var node, tw = document.createTreeWalker (
document.getElementById ('foo'),
NodeFilter.SHOW_ELEMENT,
function (n) {
switch (n.tagName) {
case 'SPAN' :
case 'IMG' :
return NodeFilter.FILTER_ACCEPT;
dfault :
return NodeFilter.FILTER_SKIP;
}
},
false
);
while (node = tw.nextNode ()) {
node; // *[@id="foo"] 要素内の span/img 要素
}
node = tw = null;
}// Gecko、Opera
/*
if (document.implementation &&
document.implementation.hasFeature ('XPath', '3.0'))
*/
{
var node, result = document.evaluate (
'descendant::*[ self::SPAN or self::IMG ]',
document.getElementById ('foo'),
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null
);
for (var i = 0; i < result.snapshotLength; i++) {
node = result.snapshotItem (i); // *[@id="foo"] 要素内の span/img 要素
}
node = result = null;
}<script type="application/javascript; version=1.6">
var callback = function (n) { return n; };
// span 要素と img 要素のリストを Array で作成
var nodeArray = Array.map (document.getElementsByTagName ('span'), callback);
nodeArray.push.apply (
nodeArray,
Array.map (document.getElementsByTagName ('img'), callback)
);
</script>try {
var xmlDoc = new ActiveXObject ('Msxml2.DOMDocument.3.0');
xmlDoc.async = false;
xmlDoc.load ('sample.xml'); // application/xml
var nodeList = xmlDoc.getElementById ('foo').selectNodes (
'descendant::*[ namespace-uri()="http://www.w3.org/1999/xhtml"\
and (local-name()='span' or local-name()='img') ]');
// ... nodeList に対する処理 ...
var xslDoc = new ActiveXObject ('Msxml2.FreeThreadedDOMDocument.3.0');
xslDoc.async = false;
xslDoc.load ('sample.xsl');
var xsltProc = new ActiveXObject ('Msxml2.XSLTemplate.3.0');
xsltProc.stylesheet = xslDoc;
xsltProc = xsltProc.createProcessor ();
xsltProc.input = xmlDoc;
xsltProc.transform ();
var resultHTML = xsltProc.output;
} catch (error) { ; }try {
var xmlDoc = document.implementation.createDocument ('', '', null);
xmlDoc.async = false;
xmlDoc.load ('sample.xml'); // application/xml
var result = xmlDoc.evaluateXPointer ('xpath1(/descendant::*[ @id="foo" ]/\
descendant::*[ namespace-uri()="http://www.w3.org/1999/xhtml"\
and (local-name()='span' or local-name()='img') ])');
} catch (error) { ; }var selection = getSelection (); var I = result.length; var i = 0; while (i < I) selection.addRange (result.item (i++));