|
|
|
| Не пугайтесь ,что много кода для форума. В нём во всём не нужно разбираться8-)
Почему, в представленном ниже скрипте, при его запуске создаётся выпадающее меню , значения выглядят :'Type 1 Type 2 Type 3'
'Type 1 Type 2 Type 3'
'Type 1 Type 2 Type 3' , а
должны выглядеть так : Type 1
Type 2
Type 3
Смотрите функцию myoption(root);
Переменная t записывает сразу все значения тегов <option> и выдаёт их 3 раза,а она не должна так делать.
Где ошибка??????????
Спасибо
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test aspdom</title>
</head>
<script language="javascript">
<!--
var dom = new ActiveXObject("microsoft.XMLDOM");
dom.async = false;
dom.load ("file.xml");
var root=dom.documentElement;
function parse(root)
{
var i=0;
if(root.nodeType==1)
{
document.writeln(root.nodeName);
document.write('<br>');
if(root.nodeName=='all') myall();
document.write('<br>');
if(root.nodeName=='Item') myItem(root);
document.write('<br>');
if(root.nodeName=='SimpleType') mySimpleType(root);
document.write('<br>');
if(root.nodeName=='option') myoption(root);
document.write('<br>');
}
else if(root.nodeType==3){}
else
{
document.writeln('<br><br>Error');
}
if(root.childNodes!=null)
{
document.writeln('It consist of '+root.childNodes.length+' elements:');
for(i=0;i<root.childNodes.length;i++)
{
parse(root.childNodes.item(i));
}
}
}
function viewDocument()
{
document.writeln('<body bgcolor="white">');
document.writeln('<p><center><hr width=80%>XML sample page <hr width=80%></center><p>');
parse(root);
document.writeln('</body>');
}
function myall()
{
document.write("myall");
}
function myItem(root)
{
document.write("myItem");
document.write(root.attributes[0].name);//âûâåäåò name
document.write(root.attributes[0].text);//âûâåäåò Test item
}
function mySimpleType(root)
{
document.write("mySimpleType");
document.write('<br>');
document.write(root.attributes[0].name);//âûâåäåò name
document.write('<br>');
document.write(root.attributes[1].name);//âûâåäåò Test item
document.write(root.attributes[1].text);//âûâåäåò êàêîé-òî òåêñò
elemtext = root.attributes[1].text;
elemname = root.attributes[0].text;
if(elemtext=='text'){
document.write("<input type='"+elemtext+"' name='"+elemname+"'>");
}
if(elemtext=='radio'){
document.write("<input type='"+elemtext+"' name='"+elemname+"'>");
}
if(elemtext=='List'){
document.write("<select name='"+elemname+"'>");
myoption(root);
document.write("</select>");
}
}
function myoption(root)
{
//document.write(root.nodeName);
//s=root.attributes[1].text;
// document.write(s);
if(root.nodeName=='SimpleType'){
//document.write(root.text);
t=root.text;
//document.write(root.text);
//document.write("<OPTION>t</OPTION>");
for(i=0;i<root.childNodes.length;i++)
document.write("<Option>'"+t+"'</Option>");
}
//document.write(root.parentNode.nodeName);
//if(root.parentNode.nodeName=='SimpleType'){
//document.write("f")}
//smtp(root);}
}
viewDocument();
//function smtp(root){document.write("q!!!")}
//-->
</script>
<body onload='parse(root);'>
</body>
</html>
|
XML файл:
<?xml version="1.0" encoding="UTF-8"?>
<all>
<Item name="Test item">
<SimpleType name="Name" type="text"/>
<SimpleType name="Radio" type="radio"/>
<SimpleType name="Type" type="List">
<option>Type 1</option>
<option>Type 2</option>
<option>Type 3</option>
</SimpleType>
<SimpleType name="Radio" type="radio"/>
</Item>
</all>
|
| |
|
|
|
|
|
|
|
для: servannin
(26.04.2005 в 15:23)
| | попробуй вот так
function myoption(root)
{
if(root.nodeName=='SimpleType'){
var t=""
for(i=0;i<root.childNodes.length;i++)
t=t+ "<option>"+root.childNodes[ i].text+"</option>"
document.write(t)
}
|
| |
|
|
|
|
|
|
|
для: Crux
(26.04.2005 в 16:32)
| | спасибо,Crux
я как всегда на каких-то мелочах сильно торможу... | |
|
|
|