首页 新闻 会员 周边 捐助

自定义控件 js 的问题

0
[已解决问题] 解决于 2008-12-02 21:51

   我在后台cs里面

            StringBuilder str = new StringBuilder();

            str.Append("AutoBox=new JSAutoBox();");


            str.Append("AutoBox.OnBlurs='" + this.OnBlurs + "';");//加加

            str.Append("AutoBox.msTextBoxID='" + this.TextBoxID + "';");

    然后 HtmlTextWriter.WriteLine(str)到了页面.

 

页面上的方法:

function AutoBox()

   var OnBlurs;


 function OnBlur()
 {
  //TRACE("OnBlur");
 
     if(this.isOverDiv==true)
     {
       return;
  }
  else
  {
      alert(OnBlurs);     //为什么这个onBlurs是空的? 而CS后台里面是有值的.
      this.HideMenuDiv();
      this.mbHasFocus=false;
    
  }

问题补充: 晕. 那一行代码被屏蔽掉了. 代码是"alert(OnBlurs);" 说是undefined 呵呵. 我代码没帖完整. {}是不会少的. 自定义控件中的CS代码: public string OnBlurs { get { return ViewState["OnBlurs"] == null ? "" : ViewState["OnBlurs"].ToString(); } set { ViewState["OnBlurs"] = value; } } private string GetInitializationScript() { StringBuilder str = new StringBuilder(); str.Append("oJSAutoSuggestBox=new JSAutoSuggestBox();"); //实例化一个js对象; 用面向对象的手法去写js; str.Append("oJSAutoSuggestBox.OnBlurss='" + this.OnBlurs + "';");//调试时这个this.OnBlurs是有值的;我能不能这样对js文件中的var OnBlurss赋值? .......// return str.ToString(); } JSAutoSuggestBox是一个js的function. 通过面向对象的手法. 如果能. 为什么下面的代码不行? function JSAutoSuggestBox() { var OnBlurss; function OnBlur() { if(this.isOverDiv==true) { return; } else { this.OnBlurss; // this.HideMenuDiv(); this.mbHasFocus=false; } }
问天何必的主页 问天何必 | 老鸟四级 | 园豆:3311
提问于:2008-11-05 13:47
< >
分享
最佳答案
0

看不明白你想做什么,不过可以确定的是,你这代码一定有问题,客户端的JS里{}就不配对

打开页面,然后使用右键查看源代码,看看 OnBlurs 是什么,如果源代码里看不到,那就肯定是 undefined,我在想,你是不是把前后台的变量、事件搞混了?

丁学 | 专家六级 |园豆:18730 | 2008-11-05 15:53
其他回答(2)
0

没看明白什么问题~再补充补充~

5yplan | 园豆:1330 (小虾三级) | 2008-11-05 20:35
0

页面上的js都是立即执行的。如果你的脚本在执行的时候,所用到的函数或对象,还没有被载入到页面,则执行就会失败。

因此,c#代码中构造的js程序,一般情况下不能直接write到页面上。

你可以用Page.RegisteClientScript或Page.RegisteStartupScript方法来把js串写到页面上。

RegisteStartupScript写出来的脚本会在页面的最后面。可能这个比较适合你的用途。

沐枫 | 园豆:325 (菜鸟二级) | 2008-11-15 11:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册