在前台页面有一个dropdownlist控件,在它的SelectedIndexChanged事件里我想写一段js代码,
大概就是让本页的一个iframe里,动态加载一个页面
代码如下:
private void chapter_SelectedIndexChanged(object sender, System.EventArgs e)
{
string url=chapter.SelectedValue;
Response.Write("<script language=\"JavaScript\">");
                      Response.Write("document.desktop.location="+url);
Response.Write("</script>"); }
desktop就是iframe的名字;
为什么提示“document.desktop为空”?

解决方案 »

  1.   

    应该是:window.desktop.location或者window.frames["desktop"].location
      

  2.   

    一楼正解!
    document代表本页,frame是另外一个页
      

  3.   

    document.desktop为空意为 没有找到这个对象...
    用widow.desktop
      

  4.   

    为什么还不行呀?
    我改为“window.desktop.location”
    提示:“window.desktop为空”
    看了一天了,还没解决,谁能帮帮我?
      

  5.   

    确认dropdownlist的autopostback属性为true?
      

  6.   

    实在不行就改为前台操作吧:在前台页面的Page_Load事件中:
    if (!IsPostBack)
    {
        DropDownList1.Attributes.Add("onchange","return test();");
    }在前台页面的客户端:
    <script language="javascript">
    function test()
    {
        var obj = document.getElementById("DropDownListClass");
        //obj.options[obj.selectedIndex].text
        //obj.options[obj.selectedIndex].value
        //你可以根据text或者value来选择需要加载的页面
        window.desktop.location = "xxx.aspx";
        return false;
    }
      

  7.   

    你使用这种方式输出脚本,它将显示在页面的头部,而此时,对象desktop还没有显示,所以,无论你如何修改,它总是找不到对象.
    你应修改如下:
    if(!this.IsClientScriptBlockRegistered("xxx"))
    {
    string url = "<script language=\"JavaScript\">" +
    "document.desktop.location.href = '" + chapter.SelectedValue + "';" + 
    "</script>" ;
    this.RegisterStartupScript("xxx",url);
    }