在下面的代码中,我试图访问一个设置在我的JavaScript项目/ objects / app中的页面HTML中的变量。
current_user
是全局变量。
页面HTML JSON设置为JavaScript全局变量:
代码如下所示,JSFiddle在这里:http://jsfiddle.net/jasondavis/Ly8hongf/
我似乎无法在我的应用内访问它,请帮忙吗?
<script type="text/javascript">
var current_user = {
userid: '123456789',
name: 'Jason Davis',
avatar: 'Jason Davis avatar img URL',
}
</script>
删除了JavaScript项目代码:
(function (window, document, $, undefined) {
"use strict";
//we cache a few useful values, like jQuery wrapped window and document
var $window = $(window),
$document = $(document),
projectTaskModal = {
init: function() {
// init code and functions ran
this.initCurrentUser();
},
// Get Global current_user variable JSON and convert to
// local Object Properties in our app
initCurrentUser: function() {
console.log('ProjectTaskModal initCurrentUser() Function Ran');
// get JSON from GLOABL current_user var
var current_user = $window.current_user;
// also tried:
// var current_user = current_user;
// assign Global JSON into local app JS Object properties
var userObj = JSON && JSON.parse(current_user) || $.parseJSON(current_user);
console.log('userObj.userid', userObj.userid);
console.log('userObj.name', userObj.name);
console.log('userObj.avatar', userObj.avatar);
},
};
// Run Init on DOM Ready
$(function() {
projectTaskModal.init();
});
}(this, document, jQuery));
答案 0 :(得分:3)
在您的代码中,您可以:
var $window = $(window)
...然后您尝试访问current_user
的目的是:
var current_user = $window.current_user;
但是$window
是一个jQuery对象。全局变量是window
的属性,而不是jQuery对象。你只想要window
。
var current_user = window.current_user;
// No $ -----------^
或者,我只是为局部变量使用不同的名称,并利用current_user
是全局的事实:
var user = current_user;
如果不在本地声明,您就不会影响它,因此您可以访问全局。
答案 1 :(得分:1)
有两个问题
window
代替$window
。JSON.Parse
修正了JDFiddle http://jsfiddle.net/Ly8hongf/3/