2 judas jia judas_jia 于 2016.09.10 23:05 提问

js实际写代码的时候发现经常出现某语句执行不出来结果,但在其后加alert()这句话就可以执行出来

对于这个问题,我每次就把这句出不来的语句写到定时器里面就好了,比如下面

图片说明
点击更多操作弹出菜单列表,开始的时候默认是display:none;

    $("#showOperate").css("display","block");//设置菜单为block
        // alert(2);
        在火狐里面是没有问题的,但是再chrome里就弹不出来菜单,测试的时候发现给后面随便加一句alert()就能出来,当然加alert是不可能这样解决的,所以最后我设置了定时器如下:
        setTimeout(function(){$("#showOperate").css("display","block")}, 1);

这样写就chrome也正常了,定时器只有1毫秒,
求大神解答

3个回答

qq_29594393
qq_29594393   Ds   Rxr 2016.09.10 23:17

加载的顺序,你把要执行的js都放在
$(function(){

})
里面就没有问题了,原因是js执行的时候还没有加载下面的html ,找不到对象,自然无法执行

qq_29594393
qq_29594393 回复judas_jia: alert()阻塞js的加载,但是不阻塞html的加载
接近 2 年之前 回复
judas_jia
judas_jia 回复当作看不见: 我说的最后一句“为啥我那样改就可以出来了”不是问你你说的方法,我说的是为啥我把语句放进1毫秒的定时器里面就出来了,不是说写到ready里就出来了,我本来就是那样写的
接近 2 年之前 回复
qq_29594393
qq_29594393 回复judas_jia: 说了是加载顺序的原因,由于js是解释型的语言,加载一句执行一句,加载js的时候,html的内容还没有加载到,那么系统找不到这个对象,就会跳过去,所以没有执行,加了ready,是等html加载完毕,再执行js,我提的那个方法与ready等价
接近 2 年之前 回复
judas_jia
judas_jia 在reday函数里面放着啊。。。并且js的引用在代码最底部,而且,为啥我那样改就可以出来了。。。。
接近 2 年之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.09.11 07:10

看下浏览器的输出控制台是不是报错了呢?浏览器的开发者模式F12.

showbo
showbo   Ds   Rxr 2016.09.12 10:10

发此代码的前后部分,怎么用的,如果是ajax等异步操作需要在回调里面执行,要不没返回执行了获取不到dom当然没有效果了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
js加alert才执行函数解决办法
问题:js某段代码之前加上alert就能执行,否则无效不执行 分析:可能由于这段代码需要页面元素进入一定的状态才能使用,加上alert之后,相当于页面元素有足够的时间进入一定的状态,所以使其代码延迟执行,应该可以解决该问题 例子: 隐藏百度商桥的对话框等,直接在页面最底部加载script隐藏该元素没反应,可以通过setTimeout函数延迟执行 window.onload =
JS加载不出来 必须alert才可以 alert另一种功能
BEGIN; 今天在引入百度编辑器时,发现百度编辑器加载不出来。 代码是这样的: var editor = new baidu.editor.ui.Editor({    textarea: 'content' }); editor.render('editor_content'); 开始以为自己写法有问题,然后试试alert下editor,没错,的确alert出了一个ob
解决js代码中加入alert()就成功执行,不加就不对的问题!
转众多网友意见 问题:          我是做一个回车事件处理,翻页的那种,在一个页面上成功了,换到另外两个页面上就出错了。反正就是跳到1,如果加上alert(),就跳转成功。 可能情况:          这种情况一般出现在 alert() 之后的某个代码需要页面元素进入一定的状态才能使用,加上 alert() 之后,相当于页面元素有足够的时间进入一定的状态了,如果确定
js函数必须在alert执行才能执行
多数原因为界面ajax中动态添加的元素还没被添加上,就执行了js函数(js函数要调用动态元素),解决办法:ajax方法中添加 async:false,同步,作用为,在ajax执行完毕后才执行之后的js。
alert之后才执行
如果在正常情况下,代码要在alert之后才执行,解决办法:将要执行的代码用setTimeout延迟执行即可(原因:页面未加载完毕)
js文件中直接alert()中文出来的是乱码
解决办法:   在这句语句上面加上echo "";
alert 为什么会比它上一条语句先执行
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div style="background-color: red;"> 显示 </div> <script>
js代码中不加alert后边的代码不执行
一个奇葩问题 ,js代码编写如下,不加alert无法执行后边的代码。这个问题的错误很难找,找了好久,希望查询这个错误的你看到这篇文章就能解决问题,这样的问题原因应该是前面的post请求可能还没有完成,后边的代码不执行,解决方案是在红色处等待一阵,我是使用ajax去加载的一个table,,可以在红色处添加window.setTimeout(function () { test(); }, 500);
WKWebView下js的alert(),confirm(),prompt()方法无法正常执行
由于安全机制的问题,WKWebView默认对JavaScript下alert类的方法(包括alert(),confirm(),prompt())做了拦截,如果要想正常使用,需要实现WKWebView的三个代理方法
js一个方法中的两个语句中间加alert弹出和不加alert弹出执行结果不一样
最近遇到一个很奇怪的问题: “js一个方法中的两个语句中间加alert弹出和不加alert弹出执行结果不一样”   A; alert(); B;   和 A; B;   最终的运行结果不一样 (我说它奇怪是因为,A语句确实是执行完了,我在A里面做了运行完成的标识,如果A执行完了才能去执行B,即使是这样,运行结果还是出乎我的意料)。   最终解决是延迟B的执行window