如何在实例化对象后正确访问该对象:
我正在实施jCrop并需要在页面上运行两次 - (第一次设置默认框和第二次设置图像中间的框)
所以我需要创建jCrop对象,以后能够访问它的属性,到目前为止这是我的代码:
var myJcrop;
if (cropperInit == true) {
getjCropSize();
//Start up jCrop on the image, specifying our function be called when the selection rectangle changes,
myJcrop = image.Jcrop({
setSelect: [10, 10, 50, 50],
aspectRatio: 1,
onChange: update,
onSelect: update,
bgFade: 'true'
});
} else {
alert("cropperInit = false");
myJcrop({
setSelect: [startX, startY, boxWH, boxWH],
aspectRatio: 1,
onChange: update,
onSelect: update,
bgFade: 'true'
});
}
jCrop对象在第一个'if块'中创建好,但第二个'else if'块不起作用。
修改
在深入研究之后,jCrop有一个API,它的用法如下:
var jCropApi;
image.Jcrop({
setSelect: [10, 10, 10, 10],
aspectRatio: 1,
onChange: update,
onSelect: update,
bgFade: 'true'
}, function () {
jCropApi = this;
});
jCropApi.animateTo([startX, startY, boxWH, boxWH]);
感谢大家的帮助
答案 0 :(得分:3)
在你的其他条款中你没有使用myJcrop = image.Jcrop({
,你只是在写myJcrop({
。换句话说,您只是在第一个子句中创建一个对象。
您甚至不需要在每个子句中声明对象,为什么不调整变量:
var myJcrop;
if (cropperInit == true) {
getjCropSize();
var setSelectArray = [10, 10, 50, 50];
} else {
alert("cropperInit = false");
// Make sure startX, startY, etc. are set
var setSelectArray = [startX, startY, boxWH, boxWH],
}
myJcrop = image.Jcrop({
setSelect: setSelectArray,
aspectRatio: 1,
onChange: update,
onSelect: update,
bgFade: 'true'
});
答案 1 :(得分:1)
这两个代码块是独占的,只有其中一个应该运行,所以如果逻辑流经else块,你认为在if块中创建的jCrop对象永远不会被创建。
您需要将jCrop对象声明为每个逻辑块中的新对象。
答案 2 :(得分:1)
你可以这样做:
var myJcrop;
if (cropperInit == true) {
getjCropSize();
//Start up jCrop on the image, specifying our function be called when the selection rectangle changes,
var options = {
setSelect: [10, 10, 50, 50],
aspectRatio: 1,
onChange: update,
onSelect: update,
bgFade: 'true'
};
} else {
alert("cropperInit = false");
options = {
setSelect: [startX, startY, boxWH, boxWH],
aspectRatio: 1,
onChange: update,
onSelect: update,
bgFade: 'true'
};
}
myJcrop = image.Jcrop(options);