Forum Moderators: open

Message Too Old, No Replies

Get the right elements

         

DrStein

7:14 pm on Feb 28, 2005 (gmt 0)



This is my first code in Javascript

<html>
<head>
<script type="text/javascript">
function getIndex()
{

var x = document.getElementById("mySelect")
var y = x.options[x.selectedIndex].text
var K = xmlDoc.getElementsByTagName("dc:title")
var a,b,c,j,l;
for (j = 0 ; j < K.length ; j++ ) {
if (y == K.item(j).text) {
creator.innerHTML = j;
title.innerHTML = xmlDoc.getElementsByTagName("dc:title").item(j).text;
abstract.innerHTML = xmlDoc.getElementsByTagName("dcterms:abstract").item(j).text;
tableOfContents.innerHTML = xmlDoc.getElementsByTagName("dcterms:tableOfContents").item(j).text;
created.innerHTML = xmlDoc.getElementsByTagName("dcterms:created").item(j).text;
teacher.innerHTML = xmlDoc.getElementsByTagName("dc:contributor").item(j).text;


}
}
}
</script>

</head>

<body>

<form>
Select a book from the list:
<select id="mySelect">
</select>
<script type="text/javascript">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("library.xml")
y = document.getElementById("mySelect");
var h,x;
var K=xmlDoc.getElementsByTagName("dc:title")
for (j = 0 ; j < K.length ; j++ ) {
x = K.item(j).text;
h = document.createElement("OPTION");
h.text = x;
y.add(h);
}
</script>

<br /><br />
<input type="button" onclick="getIndex()" value="Show index of selected book">
</input>
</form>
<table border="1">
<tr><th>Creator: </th><td id="creator"></td></tr>
<tr><th>Title: </th><td id="title"></td></tr>
<tr><th>Description:</th><td id="abstract"></td></tr>
<tr><th>Contents:</th><td id="tableOfContents"></td></tr>
<tr><th>Created:</th><td id="created"></td></tr>
<tr><th>Teacher: </th><td id="teacher"></td></tr>

</table>
</body>
</html>

This works if each book in the XML file has all elemnts.But what if the file looks like this
<library>
<book>
<dc:title>book a</dc:title>
<dc:creator>creator a</dc:creator>
<dc:creator>creator b</dc:creator>
<dcterms:abstract>keywords</dcterms:abstract>
<dcterms:tableOfContents>contents
</dcterms:tableOfContents>
<dcterms:created>May 25, 2004</dcterms:created>
</book>
<book>
<dc:title>book b</dc:title>
<dc:creator>creator v</dc:creator>
<dcterms:abstract>keywords</dcterms:abstract>
<dcterms:tableOfContents>contents
</dcterms:tableOfContents>
<dcterms:created>May 25, 2004</dcterms:created>
<dc:contributor>teacher a</dc:contributor>
<dc:contributor>teacher b</dc:contributor>
</book>
<book>
<dc:title>book c</dc:title>
<dc:creator>creator a</dc:creator>
<dcterms:abstract>keywords</dcterms:abstract>
<dcterms:tableOfContents>contents
</dcterms:tableOfContents>
<dcterms:created>May 25, 2003</dcterms:created>
</book>
<book>
<dc:title>book d</dc:title>
<dc:creator>creator r</dc:creator>
<dc:creator>creator g</dc:creator>
<dcterms:abstract>keywords</dcterms:abstract>
<dcterms:tableOfContents>contents
</dcterms:tableOfContents>
<dcterms:created>May 26, 2004</dcterms:created>
</book>
</library>

Is there a way to get only the elemts of the selected book? Because with the code i have writen if you select book a ,j will be 0 so it will return contributor teacher a which is the
xmlDoc.getElementsByTagName("dc:contributor").item(0).text and if i select book 4 it will return an error .

orion_rus

8:06 am on Mar 4, 2005 (gmt 0)

10+ Year Member



this is wrong ->var y = x.options[x.selectedIndex].text
replace it to this->var y = x.options[x.selectedIndex].value if u need to get value
or to this->var y = x.options[x.selectedIndex].innerHTML if u need to get a text of a select
Good luck to you

Bernard Marx

5:26 pm on Mar 4, 2005 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



That syntax is actually quite well supported these days.

orion_rus

5:51 pm on Mar 4, 2005 (gmt 0)

10+ Year Member



Sorry my fault)