我想我遇到了異步代碼的問題。Javascript,更改新創建對象的值
我有選擇的形式:
<tr>
<td>Genre</td>
\t <td>
\t \t <div class="styled-select">
\t \t <select id="Genre" name="Genre" onchange="showUntergenre(this.value)">
\t \t \t <option value="0" selected="selected"></option>
\t \t \t $_sql_Genre = mysql_query ("SELECT * FROM tbl_genre ");
\t \t \t While ($Genre_result = mysql_fetch_array($_sql_Genre)){ \t \t
\t \t \t \t $genre_id=$Genre_result[0]; \t \t
\t \t \t \t $genre_name=$Genre_result[1];
\t \t \t \t echo"<option value='$genre_id'>$genre_name</option>";
\t \t \t } \t
\t \t </select>
\t \t </div>
\t </td>
\t <input type="hidden" name="GenreHidden" id="GenreHidden" value="$genre">
\t <td>
\t \t <div id="txtHint"></div>
\t </td>
\t <input type="hidden" name="UntergenreHidden" id="UntergenreHidden" value="$untergenre">
</tr><tr>
現在我設置隱藏字段的值,轉向以這種形式。下面的JavaScript代碼會被執行:
window.onload = selectSelectBox("Genre");
handleGenre();
handleUntergenre();
我選擇的選擇框的條目。
function selectSelectBox(object){
\t var selectBox = document.getElementById(object);
\t var value = document.getElementById(object + "Hidden").value;
\t if (selectBox != null && value != "0"){
\t \t selectBox.selectedIndex = value;
\t }
}
我想隱藏字段的值。
function handleGenre(){
\t genreValue = document.getElementById("GenreHidden").value;
\t if (genreValue != "0"){
\t \t showUntergenre(document.getElementById("GenreHidden").value);
\t }
}
現在我做一個SELECT上我的數據庫來獲取價值的新選擇框。
function showUntergenre(str, selected) {
\t if (str==0){
\t \t document.getElementById("txtHint").innerHTML="";
\t \t return;
\t }
\t if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
\t \t xmlhttp=new XMLHttpRequest();
\t }else {// code for IE6, IE5
\t \t xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
\t }
\t xmlhttp.onreadystatechange=function() {
\t \t if (xmlhttp.readyState==4 && xmlhttp.status==200) {
\t \t \t document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
\t \t }
\t }
\t xmlhttp.open("GET","getUntergenre.php?genre="+str+"&selected="+selected,true);
\t xmlhttp.send();
}
片段,PHP頁面的:
echo "<select id='Untergenre' name='Untergenre'>";
\t echo "<option value='0'></option>";
\t $i =1;
\t $_sql_Untergenre = mysql_query ("SELECT ".$Genre."_bezeichnung FROM tbl_genre_".$Genre);
\t While ($UnterGenre = mysql_fetch_array($_sql_Untergenre)){ \t \t \t \t \t \t
\t \t if ($i == $selected)
\t \t \t echo "<option value='".$i."' selected='selected'>".$UnterGenre[0]."</option>";
\t \t else
\t \t \t echo "<option value='".$i."'>".$UnterGenre[0]."</option>"; \t \t
\t \t $i++;
} \t
現在,香港專業教育學院得到了我形成一個新的選擇框,我想選擇我需要的項目,位於一個隱藏的領域。
function handleUntergenre(){
untergenreValue = document.getElementById("UntergenreHidden").value;
if (untergenreValue != "0"){
var selectBox = document.getElementById("Untergenre");
console.log("!!!!! this selectBox is always null, except in the debugger !!!!: " + selectBox);
selectBox.selectedIndex = untergenreValue;
}
}
這隻有在瀏覽器調試器,否則 「選擇框」 爲空。
我不知道是否有人能幫助我在這裏,但我還是謝謝你:-)
這對我有效!十分感謝 :-) –