2011-03-29 54 views
0

第二個Select元素無法動態顯示國家/地區,我完全按照教程進行操作,但想知道爲什麼它不起作用?無法在select元素中顯示值

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 

<html> 
<head> 
<link rel="stylesheet" type="text/css" href="default.css" /> 
</head> 
<body> 
<script type="text/javascript"> 
var citieslist=document.classic.subj2 

var cities=new Array() 
cities[0]="" 
cities[1]=["New York|newyorkvalue", "Los Angeles|loangelesvalue", "Chicago|chicagovalue", "Houston|houstonvalue", "Austin|austinvalue"] 
cities[2]=["Vancouver|vancouvervalue", "Tonronto|torontovalue", "Montreal|montrealvalue", "Calgary|calgaryvalue"] 
cities[3]=["London|londonvalue", "Glasgow|glasgowsvalue", "Manchester|manchestervalue", "Edinburgh|edinburghvalue", "Birmingham|birminghamvalue"] 

function updateSubj(selectedcitygroup){ 
    citieslist.options.length=0 
    if (selectedcitygroup>0){ 
     for (i=0; i<cities[selectedcitygroup].length; i++) 
     citieslist.options[citieslist.options.length]=new Option(cities[selectedcitygroup][i].split("|")[0], cities[selectedcitygroup][i].split("|")[1]) 
    } 
} 
</script> 
<div id="template"> 
    <div id="links"> 
     <li><a href=".">Home</a></li> 
     <li><a href=".">Contact Us</a></li> 
     <li><a href=".">Request</a></li> 
     <li><a href=".">Cloud</a></li> 
     <li><a href=".">Pricing</a></li> 
    </div> 
    <img id="tta" src="tta/tta.png"></img> 
    <div id="picture"></div> 
    <div id="search"> 
    <img id="tta" src="tta/search.jpg"></img> 
    <form name="classic"> 
    <p>LEVEL</p> 
    <select onChange="updateSubj(this.selectedIndex)"> 
     <option>Select A City</option> 
     <option>USA</option> 
     <option>Canada</option> 
     <option>United Kingdom</option> 
    </select> 
    <p>SUBJECT</p> 
    <select name="subj2"></select> 
    <p>TYPE</p> 
    <select name="sasd"></select> 
    </form> 
    </div> 
    <div id="gradient_bg"></div> 
    <?php 
    echo "ssssss"; 
    ?> 
</div> 
</body> 
</html> 

本教程正常工作。該元素存在之前

<form name="classic"> 
<select onChange="updateSubj(this.selectedIndex)"> 
    <option>Select A City</option> 
    <option>USA</option> 
</select> 

<select name="subj"></select> 
</form> 

<script type="text/javascript"> 

var clist=document.classic.subj 

var cities2=new Array() 
cities2[0]="" 
cities2[1]=["New York|newyorkvalue"] 
cities2[2]=["Vancouver|vancouvervalue"] 


function updateSubj(ssg){ 
    clist.options.length=0 
    if (ssg>0){ 

     for (i=0; i<cities2[ssg].length; i++) 
      clist.options[clist.options.length]=new Option(cities2[ssg][i].split("|")[0], cities2[ssg][i].split("|")[1]) 
     } 
} 

</script> 
+0

請編輯您的問題,並且僅在必要的地方編輯。如果你粘貼你的整個HTML文檔,這並不是很有用。 – Starx 2011-03-29 12:19:20

+0

Uch,你從教程中得到了這個?可能約會從1999年?那裏有很多錯誤。 – BGerrissen 2011-03-29 12:22:02

回答

0

var citieslist=document.classic.subj2聲明,它也有很多好做,而不是下面。

var citiesList = document.getElementById("subj2"); 

並確保腳本在您需要的HTML元素可用時運行。一個簡單的(也是最好的)方法是在</body>標籤之前的文檔底部包含所有javascript。

+0

但是,教程工作和我的代碼不起作用?奇怪?我已經準確地剪切和粘貼了10次。比Actionscript更難。 – Jame 2011-03-29 12:29:36

+0

本教程在目標HTML下面有腳本,而在HTML之前有它。在創建對HTML的引用時,HTML需要在腳本之前。這是訂購的問題。 OMG! – BGerrissen 2011-03-29 12:44:05

+0

OMG!有用!我記得3年前有人有同樣的問題。直到今天,排序仍然沒有意義。呵呵。 – Jame 2011-03-29 12:48:48

0

這是一個修改後的版本。請注意,我不需要在劇本運行前保存選擇內容

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 

<html> 
<head> 
<link rel="stylesheet" type="text/css" href="default.css" /> 
<script type="text/javascript"> 
var cities=new Array() 
cities[0]=[]; 
cities[1]=["New York|newyorkvalue", "Los Angeles|loangelesvalue", "Chicago|chicagovalue", "Houston|houstonvalue", "Austin|austinvalue"] 
cities[2]=["Vancouver|vancouvervalue", "Tonronto|torontovalue", "Montreal|montrealvalue", "Calgary|calgaryvalue"] 
cities[3]=["London|londonvalue", "Glasgow|glasgowsvalue", "Manchester|manchestervalue", "Edinburgh|edinburghvalue", "Birmingham|birminghamvalue"] 

function updateSubj(countrySel){ 
    var selectedcitygroup = countrySel.selectedIndex; 
    var citieslist = countrySel.form.citieslist; 
    citieslist.options.length=0; 
    if (selectedcitygroup>0){ 
    for (var i=0; i<cities[selectedcitygroup].length; i++) { 
     var parts = cities[selectedcitygroup][i].split("|"); 
     citieslist.options[citieslist.options.length]=new Option(parts[0], parts[1]) 
    } 
    } 
} 
</script> 

</head> 
<body> 
<div id="template"> 
    <div id="links"> 
     <li><a href=".">Home</a></li> 
     <li><a href=".">Contact Us</a></li> 
     <li><a href=".">Request</a></li> 
     <li><a href=".">Cloud</a></li> 
     <li><a href=".">Pricing</a></li> 
    </div> 
    <img id="tta" src="tta/tta.png"></img> 
    <div id="picture"></div> 
    <div id="search"> 
    <img id="tta" src="tta/search.jpg"></img> 
    <form name="classic"> 
    <p>LEVEL</p> 
    <select name="country" onChange="updateSubj(this)"> 
     <option>Select a country</option> 
     <option>USA</option> 
     <option>Canada</option> 
     <option>United Kingdom</option> 
    </select> 
    <p>SUBJECT</p> 
    <select name="citieslist"></select> 
    <p>TYPE</p> 
    <select name="sasd"></select> 
    </form> 
    </div> 
    <div id="gradient_bg"></div> 
    <?php 
    echo "ssssss"; 
    ?> 
</div> 
</body>