js的if语句被跳过,代码如下:

<script>varmessage=window.confirm("您确定要预定吗?");if(message){document.getElementById('to... <script>
var message = window.confirm("您确定要预定吗?");
if(message){
document.getElementById('toform').submit(); //提交表单
}
else{
}
window.location.replace(location); //刷新页面
</script>
为什么有时候,message==“true”时,if里面的语句就是不执行呢?直接跳到执行刷新语句了。(就是有时执行,有时又不执行.....)
展开
 我来答
应笑郎04
推荐于2017-11-27 · TA获得超过1976个赞
知道小有建树答主
回答量:1397
采纳率:100%
帮助的人:658万
展开全部
其实代码没问题,只是你还没理解js的运行机制;
其实message==“true”时,if里面的语句是执行了的;
你可以删掉 " window.location.replace(location); " 这句去测试,肯定每次都会执行,但是加上这句后,就会出现偶尔不执行的假象;

submit方法你可以理解为它是一个新线程,这个线程刚启动,正准备提交数据时, 结果主线程运行到了 " window.location.replace(location); "这句,导致页面刷新,那自然页面中的js提交任务就被终止了;

是有时执行,有时又不执行; 就是因为两个线程的任务执行哪一个早的问题;
当然了,js是没有线程的,但是你可以这么理解;

另外document.getElementById('toform').submit(); 提交后页面本身就会跳转,所以你让服务器端处理完了之后直接跳转到location, 我也大概知道你为什么这么写,看样子你是在防止用户后退后重新提交;

建议你学习下 jquery的表单异步提交,以及回调函数; 就是当提交完成后再运行 window.location.replace(location); 这行代码;

大概是这个样子:
$.post(
"url" , //提交地址

{
key1:value1,
key2:value2

}, //要提交的数据
function(data){
window.location.replace(location);
}

);
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友729ddfe
2015-06-29
知道答主
回答量:39
采纳率:0%
帮助的人:16万
展开全部
可能不是boolean值
试试字符串 ==
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式