神奇:js一个函数里定义了两个变量,其中一个变量在另一个函数里也能调用,另一个变量却不能调用 在第一个函数里定义了popup和popup1两个变量,在第二个函数里也需要用到这两个变量,测试发现popup必须重新定义,popup1却不需要,这是什么情况? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var popup1=document.getElementById("popup1"); var popup = document.getElementById("popupcontent");你可以放在函数外边,定义为全局变量,供所有函数使用你之前的处理,肯定是访问不到的,也许出现了错误,只不过页面看上去还算正常,也许你可以通过开发者人员工具来查看控制台所出现的错误 不神奇,这 popup1 popupcontent 直接可用了。早就存在了。 确实是,我发现这里直接用id就行了,没必要用document.getElementById再定义变量。 ie浏览器可以直接用元素的id访问元素。其它的浏览器必须要用document.getElementById() 为了兼容各种浏览器,建议你放在外面定义,但要在id的元素加载完后,获取对象用:document.getElementById("id"); 因为(某些)浏览器会以id为变量名在全局下创建该dom对象的引用。具体哪些浏览器有这个特性,没兴趣去一一测试,因为这个特性没有什么利用价值,反而有很多副作用。这个特性不是一个标准,因此请不要依赖这个特性,个人觉得,还是乖乖的getElementById吧。 JS中变量作用域如下1.一般顺序代码中定义的变量 本质可以看成公用变量 可以在任意位置调用2.函数体中定义的变量,一般只有在该函数体中使用,没有办法在该函数之外或者其他函数中使用3.特殊情况,比如变量重名,对象属性等等,这个要自己体会就你这个问题,可能如楼上描述DOM元素带id的或者在浏览器中会有自己的同名对象,但极力不建议用这些浏览器的该特性,因为非通用所以按上面的作用域说法,你就应该在顺序代码中靠前的位置把需要多个函数使用的公共变量定义好,而不是定义在函数体中 求解:脚本控制select的下拉列表的自动展开 checkbox的问题 验证码的显示问题?在线求解!!! 简单链接问题 jqgrid3.8如何冻结列和显示和隐藏指定列 图像剪切问题 ????怎样让2个框架分别滚动(javascript问题) 送分啦,一个按钮背景变换问题!欢迎大家探讨!^Q^ 怎么关闭整个框架? 聊天室中的在线问答游戏如何实现??? 当横向图片多的时候,如何动态生成横向滚动条? 如何取得所在城市名
var popup = document.getElementById("popupcontent");你可以放在函数外边,定义为全局变量,供所有函数使用你之前的处理,肯定是访问不到的,也许出现了错误,只不过页面看上去还算正常,也许你可以通过开发者人员工具来查看控制台所出现的错误
popup1 popupcontent 直接可用了。
早就存在了。
2.函数体中定义的变量,一般只有在该函数体中使用,没有办法在该函数之外或者其他函数中使用
3.特殊情况,比如变量重名,对象属性等等,这个要自己体会就你这个问题,可能如楼上描述DOM元素带id的或者在浏览器中会有自己的同名对象,但极力不建议用这些浏览器的该特性,因为非通用所以按上面的作用域说法,你就应该在顺序代码中靠前的位置把需要多个函数使用的公共变量定义好,而不是定义在函数体中