javascript - js 怎么跨页面调用变量?有哪些简单的办法??
巴扎黑
巴扎黑 2017-04-11 12:24:50
[JavaScript讨论组]

实际情况是这样这个lechart.js里面定义了三个变量D3,D1,D0,现在我在另一个html页面引入这个js,然后在该页面下调用lechart.js里面定义过的变量D3,D1,D0,,但是因为作用域的问题肯定就拿不到了会报错,请问怎么解决这个问题呢???怎么才能拿到这个变量?

补充:我现在修改js里面吧var去掉让局部变量变为全局变量 可这样还是not defined,求解???


这样吧数据传入到方法里面是可以正常运行的,拿出来就不行了,我也知道是D3没有找到,但是该怎么来写呢??求各位大神指点

巴扎黑
巴扎黑

全部回复(4)
天蓬老师

这个不是应该用闭包或是创建一个新的对象么?

D3 D1 D0 算是basicDataChart 的配置,使用闭包或是对象都可以呀!

简单写个闭包的吧

(function (){
    var D3,D1,D0;
    function  basicDataChart(){
        // TO DO
    }
    basicDataChart.getD=fucntion(){
        return [D3,D1,D0]; // 自己改成想要的结构
    }
    window.basicDataChart=basicDataChart;
})();
PHPz

你好歹代码帖全点呀

天蓬老师

1.html文件里,你是先用了D3 D1 D0 再调的方法,但是这三个变量的赋值是写在方法里面的,还没有调用方法,也就还没有执行D3 = ..... 的语句,也就是没有定义全局变量,自然会是not defined,js是顺序执行的。举个例子。

function msg(val) {
                a = "111";//全局变量
                console.log('这是个方法:' + val);
            }
            msg("3333");//先调用方法
            console.log(a);//再使用全局变量
function msg(val) {
                var a = "111";//局部变量
                console.log('这是个方法:' + val);
            }
            msg("3333");//调用方法
            console.log(a);//使用局部变量
function msg(val) {
                a = "111";//在方法里赋值全局变量
                console.log('这是个方法:' + val);
            }
            console.log(a);//先使用全局变量
            msg("3333");//再调用方法

对比一下这三段代码的区别。
2.把给value1 value2的赋值写在js方法里面,调用函数的时候自然就给它赋值了。

可以多看看js变量作用域的问题。js变量以及其作用域详解

我自己试验所得,不知道解释的是不是正确。欢迎大神指摘。

阿神

跨页面前端用cookie或者html5里的local Storage

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号