母版页调用js文件问题

zhouyongli41 2008-07-21 04:37:01
直接在页面嵌入js代码没问题
<script>
....
document.getElementById("<%=lblContenta.ClientID%>").innerHTML=content;
</script>
但是把代码放在yinuo.js中,在母版页调用了 <script type="text/javascript" src="js/yinuo.js"></script>
有执行js文件,但就是找不到document.getElementById("<%=lblContenta.ClientID%>"),对像为空,
直接在页面嵌入代码就没问题

...全文
1058 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
luomingliang 2009-05-26
  • 打赏
  • 举报
回复
全部都说错了。实际这个跟页面生命周期有关。
LZ 可以使试试 setTimeout(" 执行的函数", 3000);
看看可以获取到对象不?目前没想到解决方案
kuanghongling 2009-03-27
  • 打赏
  • 举报
回复
document.getElementById('<%=txt_Name.ClientID %>').value
就可以获取里面的值了
guyan033 2008-07-22
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 kongwei521 的回复:]
提示document.getElementById(" <%=lblContenta.ClientID%>")对象为空
找不到控件

右键点击查看源代码就会生成这样的了ctl00_ContentPlaceHolder1_zhERP_Default_zhERP_TextBox1
onclick="document.getElementById('ctl00_ContentPlaceHolder1_zhERP_Default_zhERP_TextBox1').value= 'aaa';">这样写
还可以onclick="document.getElementById(" <%=TextBox1.ClientID %>").value= 'aaa';">

你试试吧, <asp…
[/Quote]
jl_lsj 2008-07-22
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 zhouyongli41 的回复:]
C# codepublic string getMasterID
{
get
{

/* 判断有无母板页 */
if (this.Master != null)
{
/* 有母板页,先找ContentPlaceHolder */
ContentPlaceHolder cph =(ContentPlaceHolder) this.Master.FindControl("ContentPlaceHolder1");
return cph.ClientID;

[/Quote]
jzywh 2008-07-22
  • 打赏
  • 举报
回复

<script>
function getData(c_id)
{
AjaxMethod.GetContent(c_id,getCon);
}
function getCon(response, contentID, imageID)
{
if(response.value!=null)
{
var ds=response.value;
if(ds!=null&&typeof(ds)=="object"&&ds.Tables[0].Rows.length>0)
{
var content=ds.Tables[0].Rows[0].c_content;
var imgUrl=ds.Tables[0].Rows[0].c_picture;
document.getElementById(contentID).innerHTML=content;
document.getElementById(imageID).src=imgUrl.replace("~/","");
}
else
{
alert("没搜索到数据");
}
}
else
{
alert("传值出错,重输入");
}
}
</script>


调用的时候加参数就够了getCon(response, contentID, imageID)
jzywh 2008-07-22
  • 打赏
  • 举报
回复
control的id都用参数传进去
jzywh 2008-07-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhouyongli41 的回复:]
调用JS文件有问题
C# code<asp:Content ID="Content1"ContentPlaceHolderID="ContentPlaceHolder1"Runat="Server"><script type="text/javascript"src="js/yinuo.js"></script></asp:Content>
提示document.getElementById(" <%=lblContenta.ClientID%>")对象为空

嵌入页面没问题
JScript code<script>functiongetData(c_id)
{
AjaxMethod.GetContent(c_id,getCon);
}functiongetCon(response)

[/Quote]

当然啦, js 又不会执行 asp.net 的 <%=lblContent.ClientID%> 代码。
zhouyongli41 2008-07-22
  • 打赏
  • 举报
回复
大家帮忙看看,我试了一下是因为在js文件中<%=getMasterID%>用这绑定方法取值都失效了,用嵌入代码就没问题
zhouyongli41 2008-07-22
  • 打赏
  • 举报
回复
public string getMasterID
{
get
{

/* 判断有无母板页 */
if (this.Master != null)
{
/* 有母板页,先找ContentPlaceHolder */
ContentPlaceHolder cph =(ContentPlaceHolder) this.Master.FindControl("ContentPlaceHolder1");
return cph.ClientID;
}
else
{
return "";
}

}

取ID没问题,在JS中好像取不到属性<%=getMasterID%>的值,JS中怎么写
zhouyongli41 2008-07-22
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 kongwei521 的回复:]
提示document.getElementById(" <%=lblContenta.ClientID%>")对象为空
找不到控件

右键点击查看源代码就会生成这样的了ctl00_ContentPlaceHolder1_zhERP_Default_zhERP_TextBox1
onclick="document.getElementById('ctl00_ContentPlaceHolder1_zhERP_Default_zhERP_TextBox1').value= 'aaa';">这样写
还可以onclick="document.getElementById(" <%=TextBox1.ClientID %>").value= 'aaa';">

你试试吧, <asp…
[/Quote]
郁闷死了,用document.getElementById(" <%=lblContenta.ClientID%>").innerHTML不行
难道我只能查看源代码看控件的ID,document.getElementById('ctl00_ContentPlaceHolder1_lblContent').innerHTML=content;这样是没问题
没什么解决的办法吗啡~~~
cat_hsfz 2008-07-22
  • 打赏
  • 举报
回复
你要获取MasterPage里面的Page,然后转换为强类型,在获取里面的lblContenta。
mengxj85 2008-07-21
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 yagebu1983 的回复:]
(" <%=TextBox1.ClientID %>")好像用单引号!!
[/Quote]
是单引号,另外前面还要加上一个函数名吧。
<%# DataBinder.Eval(Container.DataItem,"列名" )%>
或者
'<%# Eval("列名", "~/worktemplate/{0}") %>'
billclinton8 2008-07-21
  • 打赏
  • 举报
回复
上面写错了一个地方
CS 定义一个属性
public string getMasterID
{
get
{

/* 判断有无母板页 */
if (this.Master != null)
{
/* 有母板页,先找ContentPlaceHolder */
objControl = this.Master.FindControl("你的母板页ID");
ContentPlaceHolder cph = (ContentPlaceHolder)objControl;
return cph.ClientID;
}
else
{
return "";
}

}

}
JS
document.getElementById(' <%=getMasterID+"_"lblContenta.ClientID%>')

注意属性必须为公有的
billclinton8 2008-07-21
  • 打赏
  • 举报
回复
CS 定义一个属性
public string getMasterID
{
get
{

/* 判断有无母板页 */
if (this.Master != null)
{
/* 有母板页,先找ContentPlaceHolder */
objControl = this.Master.FindControl("你的母板页ID");
ContentPlaceHolder cph = (ContentPlaceHolder)objControl;
return cph.ClientID;
}
else
{
return ;
}

}

}
JS
document.getElementById('<%=getMasterID+"_"lblContenta.ClientID%>')
yagebu1983 2008-07-21
  • 打赏
  • 举报
回复
(" <%=TextBox1.ClientID %>")好像用单引号!!
dotnetsong 2008-07-21
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 kongwei521 的回复:]
提示document.getElementById(" <%=lblContenta.ClientID%>")对象为空
找不到控件

右键点击查看源代码就会生成这样的了ctl00_ContentPlaceHolder1_zhERP_Default_zhERP_TextBox1
onclick="document.getElementById('ctl00_ContentPlaceHolder1_zhERP_Default_zhERP_TextBox1').value= 'aaa';">这样写
还可以onclick="document.getElementById(" <%=TextBox1.ClientID %>").value= 'aaa';">

你试试吧, <asp…
[/Quote]
[color=#0000FF]
楼上正解,LZ试下![/color]
蝶恋花雨 2008-07-21
  • 打赏
  • 举报
回复
提示document.getElementById(" <%=lblContenta.ClientID%>")对象为空
找不到控件

右键点击查看源代码就会生成这样的了ctl00_ContentPlaceHolder1_zhERP_Default_zhERP_TextBox1
onclick="document.getElementById('ctl00_ContentPlaceHolder1_zhERP_Default_zhERP_TextBox1').value= 'aaa';">这样写
还可以onclick="document.getElementById(" <%=TextBox1.ClientID %>").value= 'aaa';">

你试试吧, <asp:TextBox id="TextBox1" runat="server" Text="1"> </asp:TextBox>
放在母版页面里面ID就会变了右键点击查看源代码

你还是直接写类似这样的ID吧ctl00_ContentPlaceHolder1_zhERP_Default_zhERP_lblContenta
wh520pl 2008-07-21
  • 打赏
  • 举报
回复
最简单的办法 先把页面浏览 查看页面源文件 找到控件 查看其ID 在代码中写上这个ID 就行了
zhouyongli41 2008-07-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dotnetsong 的回复:]
不好意思,不是模式页,应该是母板页,哈
[/Quote]
zhouyongli41 2008-07-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 kongwei521 的回复:]
C# code往head区加入js的方法:
LiteralControl lc = new LiteralControl("<script type=\"text/javascript\" src=\"scripts/js1.js\"></script>");
Page.Header.Controls.Add(lc);注:Page_Load中


参考http://hi.baidu.com/flydragon1978/blog/item/e9d9b722d6f4f1f1d6cae2ed.html
[/Quote]
        LiteralControl lc = new LiteralControl("<script type=\"text/javascript\" src=\"js/yinuo.js\"></script>");
Page.Header.Controls.Add(lc);

谢谢啊,还是不行
提示document.getElementById(" <%=lblContenta.ClientID%>")对象为空
找不到控件
加载更多回复(12)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧