Javascript 如何将对象保持在范围内?
我正在实现以下功能。页面的大部分在我的entryPage.php文件中创建一次。“Stage”表是通过对stageArea.php的AJAX调用创建的。我的问题是,我的数据对象是在Javascript 如何将对象保持在范围内?,javascript,jquery,object,scope,Javascript,Jquery,Object,Scope,我正在实现以下功能。页面的大部分在我的entryPage.php文件中创建一次。“Stage”表是通过对stageArea.php的AJAX调用创建的。我的问题是,我的数据对象是在$(document).ready(function(){…}中创建的,它不能被$(document).ready(function(){…}之外的其他函数访问 entryPage.php …HTML。。。 $(文档).ready(函数(){ var dataObject=new DataEntryObj();//创建
$(document).ready(function(){…}
中创建的,它不能被$(document).ready(function(){…}
之外的其他函数访问
entryPage.php
…HTML。。。
$(文档).ready(函数(){
var dataObject=new DataEntryObj();//创建数据对象
$.post(“../stageArea.php”,{array:dataObject.dataArray},函数(数据){
$('#stageArea').html(数据);
});
}
var DataEntryObj=函数(){
this.dataArray=[[0,0,0,0,0,0,0,3,0]];
....
}
函数updateData(值、行、索引){
警报(“更新:“+行+”+索引+”+值);//值正常
警报(dataObject.dataArray[row][index]);//但数据对象不在这里
dataObject.dataArray[row][index]=value;//因此无法分配此值
$.post(“../stageArea.php”,{array:dataObject.dataArray},函数(数据){
$('#stageArea').html(数据);
});
}
将对象保持在与其他函数相同的范围内的好方法是什么?只需在
$(文档)之外声明var
。准备好,然后不使用var
var dataObject ;
$(document).ready(function() {
dataObject = new DataEntryObj(); // create the data object
......
});
这现在相当于窗口。dataObject
您可以定义一个全局变量,但是您应该确保updateData
在DOM变得可访问后尝试访问dataObject
var dataObject, DataEntryObj;
DataEntryObj = function(){
this.dataArray = [[0,0,0,0,0,0,0,3,0]];
}
$(document).ready(function() {
dataObject = new DataEntryObj();
$.post("../stageArea.php", {array : dataObject.dataArray}, function(data){
$('#stageArea').html(data);
});
}
function updateData(value, row, index) {
// will have ref to dataObject changed by $(document)
}
您不能访问dataObject变量。因为您在函数中设置了。您应该创建一个全局对象变量,并且可以访问任何地方
var dataObject = { data: null };
$(document).ready(function() {
dataObject.data = new DataEntryObj(); // create the data object
$.post("../stageArea.php", {array : dataObject.data.dataArray}, function(data){
$('#stageArea').html(data);
});
}
var DataEntryObj = function(){
this.dataArray = [[0,0,0,0,0,0,0,3,0]];
}
function updateData(value, row, index){
alert("update:" + row + " " + index + " " + value);
alert(dataObject.data.dataArray[row][index]);
dataObject.data.dataArray[row][index] = value;
$.post("../stageArea.php", {array : dataObject.data.dataArray}, function(data){
$('#stageArea').html(data);
});
}
$(document).ready(function(){})
缺少结束)
?在.ready()之前调用的更新数据在哪里
event?这给了我以下控制台错误:未捕获类型错误:DataEntryObj不是一个函数那么您可能在另一个函数中包含了DataEntryObj
函数声明。在作用域可用性方面,函数与变量相同
var dataObject = { data: null };
$(document).ready(function() {
dataObject.data = new DataEntryObj(); // create the data object
$.post("../stageArea.php", {array : dataObject.data.dataArray}, function(data){
$('#stageArea').html(data);
});
}
var DataEntryObj = function(){
this.dataArray = [[0,0,0,0,0,0,0,3,0]];
}
function updateData(value, row, index){
alert("update:" + row + " " + index + " " + value);
alert(dataObject.data.dataArray[row][index]);
dataObject.data.dataArray[row][index] = value;
$.post("../stageArea.php", {array : dataObject.data.dataArray}, function(data){
$('#stageArea').html(data);
});
}