我有一个用If(IsPost)和If(!IsPost)触发的脚本。当我用F11遍历代码时,一切都一样——除了最后一个显示div的javascript函数不会触发。
// SCRIPT FOR SHOW DIV.
<script>
function ShowFunction(divId)
{
$("#" + divId).show(600);
}
</script>
if (!IsPost)
{
var user = WebSecurity.CurrentUserId;
var dbCommand = "SELECT * FROM Survey WHERE survey_id = @0";
var row = db.QuerySingle(dbCommand, user);
if (row != null)
{
surv1 = row.surveyQ1;
if (surv1 != null)
{
someOtherVariable = "Complete";
<body onload="$('#somediv').remove();"></body>;
}
}
if (someOtherVariable = "Complete";
{
<body onload="ShowFunction('Mydiv');"</body>;
}
}
if (IsPost)
{
if (Request.Form["btnsubmit"] !=null)
{
var user = WebSecurity.CurrentUserId;
var dbCommand = "SELECT * FROM Survey WHERE survey_id = @0";
var row = db.QuerySingle(dbCommand, user);
if (row != null)
{
surv1 = row.surveyQ1;
}
if (surv1 == "yes")
{
<body onload="ShowFunction('Mydiv');"></body>;
}
}
}
此外,cshtml页面的结构是在!IsPost,它在IsPost之上,它在Form代码之上。另一篇帖子表明,我的脚本块中也有一个"window.onload"脚本,它可能会干扰<body onload="func">。我不知道为什么只有在不发帖的时候才会出现问题。
我找到了罪魁祸首。虽然这不在我发布的原始代码中,但实际上我在if(!ispost)中没有触发的代码的正上方还有一个主体加载的代码。if(ispost)中没有额外的身体负荷,这就是为什么帖子运行良好的原因。我已经编辑了原始代码来显示这一点。一旦我把第一个身体负荷(经过一些按摩)转移到另一个身体负荷中,效果很好。在向下移动第一个body onload之后,在代码的if(!ispost)部分中只剩下一个body onload。
<body onload="ShowFunction('Mydiv'); $('#somediv').remove();"</body>;
我还添加了我的原始标题,这样对偶然发现它的人可能会有用。总之,当你有多个加载事件时,要小心。您可能需要将它们堆叠成一个onload,并稍微修改一下代码。