我想我遇到了异步代码的问题。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;
}
}
这只有在浏览器调试器,否则 “选择框” 为空。
我不知道是否有人能帮助我在这里,但我还是谢谢你:-)
这对我有效!十分感谢 :-) –