我正在尝试恢复我在2009年使用asp.net编写的旧网站。
但是,我无法通过javascript动态更改下拉菜单。我的JavaScript上有这个(我添加了一些日志):
function GetScales(scaleTypeID) {
var id;
if (scaleTypeID == "Natural") {
id = 0;
}
else if (scaleTypeID == "Melodic") {
id = 1;
}
else if (scaleTypeID == "Harmonic") {
id = 2;
}
else {
id = -1;
}
guitarv2.ScaleSelectionService.GetScaleList(id, OnRequestComplete, OnError);
}
function OnRequestComplete(result) {
console.log("ggg OnRequestComplete");
try {
//debugger;
var DropDownScaleName = $get('<%#GetDropDownScaleName()%>');
console.log("ggg DropDownScaleName=" + DropDownScaleName);
DropDownScaleName.innerHTML = "";
for (var n = 0; n < result.length; n++) {
var option = document.createElement("option");
option.value = result[n].ID;
option.innerHTML = result[n].Description;
DropDownScaleName.appendChild(option);
}
}
catch (err) {
ErrorMsg(err);
}
}
和行
var DropDownScaleName = $get('<%#GetDropDownScaleName()%>');
(据说)在这里调用我的网络表单
protected string GetDropDownScaleName()
{
string ddlName = DropDownListScaleName.UniqueID.ToString();
ddlName = ddlName.Replace("$", "_");
Debug.WriteLine("ggg Dropdown = " + ddlName);
return (ddlName);
}
检查日志时,我看到了我不了解的内容。首先,上面的方法仅被调用一次(在页面加载时)。如果在下拉菜单中选择其他选项,则看不到新日志。我只看到这些日志一次:
ggg Dropdown = ctl00_ContentPlaceHolder2_DropDownListScaleName
当我检查代码页和添加的javascripts日志时,我看到了(我将下拉菜单覆盖在图片上)
我看到调用了OnRequestComplete,但是我的DropDownScaleName始终为null,所以这就是失败的原因。
但是当我检查页面代码时,下拉名称看起来应该是我的Web表单返回的名称。见下文:
此代码大约在10年前就可以使用。我什么都没改变,但是那时的技术是不同的。新的浏览器或最新的asp.net可能不再接受。
关于正在发生什么的任何线索?
谢谢。