在函数中设置td offSetWidth

时间:2016-04-11 18:38:11

标签: javascript asp.net

我正在尝试使用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);
    }

2 个答案:

答案 0 :(得分:0)

所以你已经被服务器调用了javascript。最大的问题是脚本何时执行以及原始脚本何时执行?我的猜测是你的旧脚本是在页面加载后执行的,所以引用的所有元素都存在,所有元素都是由浏览器绘制的。

您的新脚本可能在内容完全加载之前运行,这意味着浏览器无法找到引用的元素,因为它尚未加载,或者没有绘制任何内容,因此所有元素都没有宽度。

答案 1 :(得分:0)

我能够使它工作,但TD元素比gridview元素略宽。我相信这与填充有关:

function MyFunction(){ document.getElementById("myTd").width = document.getElementById('<%= ID=myGridview.ClientID %>').rows[0].cells[0].offsetWidth; };