在函数中设置td offSetWidth

Set td offSetWidth in a function

本文关键字:td offSetWidth 设置 函数      更新时间:2024-05-08

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

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

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

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

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