gpt4 book ai didi

asp.net - ajax 是否破坏了我的 javascript 对象?

转载 作者:行者123 更新时间:2023-12-02 20:46:37 24 4
gpt4 key购买 nike

我有一个使用 UpdatePanels 进行 ASP.NET ajax 回发的页面。在一些javascript中,我在window.onload事件中设置了一些对象,效果很好。但是,当我进行回发时,我的对象似乎被搞乱了。

一个从表接收事件的对象不再接收事件。我还遇到过一种情况,其中具有对按钮的本地引用的对象无法更新它们。这是被搞乱的按钮 javascript:

function EditItemPage(clientId)
{
this.saveButton = $get(clientId + ""_{2}"")
this.publishButton = $get(clientId + ""_{3}"")
this.exitButton = $get(clientId + ""_{4}"")

EditItemPage.prototype.GoDirty = function()
{
//it works if i add these, but i'd rather not have to.
this.saveButton = $get(clientId + ""_{2}"")
this.publishButton = $get(clientId + ""_{3}"")
this.exitButton = $get(clientId + ""_{4}"")

this.saveButton.disabled = false;
this.publishButton.value = 'Save and Publish';
this.exitButton.value = 'Discard changes and Exit';
}
}

因此,在我进行回发后,按钮引用会变得困惑,除非我像在 GoDirty() 函数中那样重置它们。

有什么见解吗?

最佳答案

this 关键字(特殊变量)根据调用它的函数而变化。基本上,这是一个范围问题。您需要围绕在 ajax 响应上调用的函数执行闭包,将您需要的内容放入全局范围内,OR执行您正在执行的操作(你不喜欢的)。

编写闭包是“正确”的方式。

您可能熟悉 this 变量根据表单输入事件更改范围的方式。对于文本框,如果使用 onblur 事件,则 this 指的是刚刚失去焦点的文本区域。

See this question for an example of how to do the closure.

This is also another good resource.

(我确信我可以为您复制并粘贴此处的示例,但这似乎是多余的)

关于asp.net - ajax 是否破坏了我的 javascript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1065440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com