0

したがって、Javascriptを使用して(属性を使用せずに)表示するXMLデータを選択したいと思います。これが私がやりたいことの詳細です:

XML

<channel>

  <item>
     <title>3.jpg</title>
     <link>images/clean/3-dirty.jpg</link>
  </item>

  <item>
     <title>4.jpg</title>
     <link>images/clean/4-dirty.jpg</link>
  </item>

<item>
     <title>5.jpg</title>
     <link>images/clean/4-clean.jpg</link>
  </item>

  <item>
     <title>6.jpg</title>
     <link>images/clean/4-dirty.jpg</link>
  </item>

... and the list goes on for ages.

</channel>

Javascript

<script type="text/javascript">
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","xml/drc.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

var x=xmlDoc.getElementsByTagName("item");
for (i=0;i<x.length;i++)
{ 
document.write("<img src='");
document.write(x[i].getElementsByTagName("link")[0].childNodes[0].nodeValue);
document.write("' alt='image' height='220px' width='260px' />");
}

</script>

URLに「dirty」または「clean」という単語のみが含まれている画像を表示するにはどうすればよいですか?IndexOf()メソッドを使用しようとしましたが、機能しません。

4

1 に答える 1

3

これを試して:

for (i=0;i<x.length;i++) {
    var src = x[i].getElementsByTagName("link")[0].childNodes[0].nodeValue;
    if( src.indexOf("dirty") != -1 ) {
       document.write("<img src='");
       document.write(src);
       document.write("' alt='image' height='220px' width='260px' />");
    }
}

それが機能しない場合は、これも試してください:

for (i=0;i<x.length;i++) {
    var src = x[i].getElementsByTagName("link")[0].childNodes[0].nodeValue;
    var srcLower = src.toLowerCase();
    if( srcLower.indexOf("dirty") != -1 ) {
       document.write("<img src='");
       document.write(src);
       document.write("' alt='image' height='220px' width='260px' />");
    }
}
于 2012-08-07T09:26:22.003 に答える