【发布时间】:2023-03-10 03:03:01
【问题描述】:
我有几个按钮可以在点击时隐藏或显示页面上的其他元素。
按钮的格式如下:
<button type="button" id="BTN" onclick="takeAction()">
JavaScript 的格式为:
<script type="text/javascript">
function takeAction() {
document.getElementById("ELEMENT1_HDR").style.display = "";
document.getElementById("ELEMENT1_BODY").style.display = "";
document.getElementById("ELEMENT2").style.display = "none";
document.getElementById("ELEMENT3").style.display = "none";
}
</script>
在本地,这在严格使用 HTML 和 JavaScript 以及其他功能在 .aspx.cs 文件中使用 c# 时工作得很好。
但是,当我发布它并通过 ip 地址访问它时,单击按钮没有任何效果。在执行检查元素并单击按钮时,我收到以下错误:
属性 'takeAction' 的值为 null 或未定义,不是 Function 对象
我做错了什么,它在我的开发环境中有效,但在我的模拟 Prod 环境中无效?
我尝试将<script> 标签内容放在<header> 和<body> 标签下,以确保发布时没有差异。 Visual Studio 会不会在发布时损坏它?
不知何故:当我从 page1 开始并单击“查看”按钮导航到特定记录时,已发布版本正在将记录视图页面加载到屏幕上,但保留 page1 名称。在本地完成时,它实际上会更改页面地址 - 这可能是函数在本地工作但在已发布环境中不起作用的原因
我选择了一个同时存在于 page1 和 page2 上的函数,称为 noCanDoYet(),它仅调用警报函数并将消息发布到屏幕上:“此功能尚未实现”。即使在两个页面上都定义了此功能,我也会收到相同的错误。
alert("help") 可以工作。
以下导航到特定记录的方式是否会导致本地环境没有的 Prod 类型环境出现问题?
protected void navigateView(object sender, EventArgs e)
{
LinkButton lb = (LinkButton)sender;
setCurrentlySelectedRecord(lb.CommandArgument);
setViewEdit("View");
Server.Transfer("page2.aspx");
}
【问题讨论】:
-
在您的 prod 环境中,如果您查看源代码,您的脚本标签是否存在?尝试 CTRL+F5 强制刷新,以防它过期。
-
它就在那里。我明白了:
<script type="text/javascript"> ...function takeAction(){...}...</script> -
调试工具的控制台是否有错误?如果您使用浏览器调试工具中的即时窗口自己调用
takeAction(),会发生什么情况? -
开发者工具的控制台除了上面引用的错误外,还有:附件页面针对文档模式5。某些控制台API和功能可能不可用。然后它进入 SCRIP5007 的错误:... 有趣的是,虽然它说文件是一回事,但它所在的页面应该引用不同的文件名...所以如果它指向错误的文件,难怪它找不到函数。
标签: javascript asp.net