我在后台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;
}
看不明白你想做什么,不过可以确定的是,你这代码一定有问题,客户端的JS里{}就不配对
打开页面,然后使用右键查看源代码,看看 OnBlurs 是什么,如果源代码里看不到,那就肯定是 undefined,我在想,你是不是把前后台的变量、事件搞混了?
没看明白什么问题~再补充补充~
页面上的js都是立即执行的。如果你的脚本在执行的时候,所用到的函数或对象,还没有被载入到页面,则执行就会失败。
因此,c#代码中构造的js程序,一般情况下不能直接write到页面上。
你可以用Page.RegisteClientScript或Page.RegisteStartupScript方法来把js串写到页面上。
RegisteStartupScript写出来的脚本会在页面的最后面。可能这个比较适合你的用途。