我正在尝试使用javascript设置表td元素的宽度。在函数外部设置时,宽度设置正确。当相同的代码封装在函数中时,td元素的宽度保持不变。我插入了断点,似乎代码被触发了。谢谢你的帮助。
这有效:
document.getElementById("myTD").offsetWidth = document.getElementById('<%= ID=myGridView.ClientID %>').rows[0].cells[0].offsetWidth;
这不是:
function myfunction() { document.getElementById("myTD").offsetWidth = document.getElementById('<%= ID=myGridView.ClientID %>').rows[0].cells[0].offsetWidth; };
从后面的代码成功调用该函数
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this.Page, this.GetType(),
"myfunction",
"myfunction();",
true);
}
答案 0 :(得分:0)
所以你已经被服务器调用了javascript。最大的问题是脚本何时执行以及原始脚本何时执行?我的猜测是你的旧脚本是在页面加载后执行的,所以引用的所有元素都存在,所有元素都是由浏览器绘制的。
您的新脚本可能在内容完全加载之前运行,这意味着浏览器无法找到引用的元素,因为它尚未加载,或者没有绘制任何内容,因此所有元素都没有宽度。
答案 1 :(得分:0)
我能够使它工作,但TD元素比gridview元素略宽。我相信这与填充有关:
function MyFunction(){ document.getElementById("myTd").width = document.getElementById('<%= ID=myGridview.ClientID %>').rows[0].cells[0].offsetWidth; };