+ -
当前位置:首页 → 问答吧 → JAVASCRIPT问题~求教

JAVASCRIPT问题~求教

时间:2013-10-03

来源:互联网

JAVASCRIPT问题~求教
RUN以下个PROGRAM 一直都系ALERT 10,
但本想佢ALERT 1 至 10, 完全唔知错咩?
我唔想改STRUCTURE 去做到个效果。
THANK~~
<script>
function init(){
var newItems = new Array();
// Create 10 new Items
for(i = 0;i< 10;i++) {
newItems.push({
id: "item-"+i,
x: 0,
y: 0,
// ctx or context, is passed to the item by the layer
draw: function () {
if(i > 0) {
alert(i);
}
}
});
}
var Scene={
Layer:null
};
Scene.Layer = Scene.prototype = function (layer) {
var defaultLayer = {
/**
* @var id {String} The string identifier of the layer
*/
id : "layer_id",
/**
* @var items {Array} The array of items stored in the layer
*/
items: [],
init:function(layer){
this.id = typeof(layer.id) != "undefined" ? layer.id : this.id;
this.items=layer.items;
return this;
},
draw : function () {
for(var i=0;i<this.items.length;i++){
this.items.draw();
}
}
}
return defaultLayer.init(layer);
};
var mLayer=new Scene.Layer({
id: "layer",
items: newItems
});
mLayer.draw();

};
init();
</script>

作者: philippower   发布时间: 2013-10-03

请使用[code] [/code ]
包起程式码...这样好难睇

作者: Susan﹏汪汪   发布时间: 2013-10-03

你要写 "closure" 架......

eg.

var _i = i

alert(_i)

作者: a8d7e8   发布时间: 2013-10-03

yes, closure is the right way to go, I'm learning dart, it is quite easy as it seems.
Just practicing dart here.
复制内容到剪贴板代码:abstract class IDraw {
Draw(Scene scene);
}

class MockDraw implements IDraw {
MockDraw(){
}

Draw(Scene scene) {
for(var model in scene.models) {
print(model.x.toString() + " " + model.y.toString());
}
}
}

class MyModel {
int x, y;
MyModel(this.x, this.y){
}
}

class Scene {
List<MyModel> models;
IDraw draw;

Scene(IDraw draw, List<MyModel> models) {
this.draw = draw;
this.models = models;
}

Draw() {
draw.Draw(this);
}

}

void main() {
List<MyModel> models = new List<MyModel>();
for(int i=0; i< 10; i++) {
models.add(new MyModel(i, i));
}

MockDraw mockDraw = new MockDraw();
Scene scene = new Scene(mockDraw, models);
scene.Draw();
}

作者: form5   发布时间: 2013-10-03

引用:原帖由 a8d7e8 於 2013-9-9 07:55 PM 发表
你要写 "closure" 架......

eg.

var _i = i

alert(_i)
Thanks!
但我加咗closure 都系咁,系咁ALERT出10


[code]
<script>
function init(){
var newItems = new Array();
// Create 10 new Items
for(i = 0;i< 10;i++) {
newItems.push({
id: "item-"+i,
x: 0,
y: 0,
// ctx or context, is passed to the item by the layer
draw: function () {
var _i=i;//closure
if(_i > 0) {
alert(_i);
}
}
});
}
var Scene={
Layer:null
};
Scene.Layer = Scene.prototype = function (layer) {
var defaultLayer = {
/**
* @var id {String} The string identifier of the layer
*/
id : "layer_id",
/**
* @var items {Array} The array of items stored in the layer
*/
items: [],
init:function(layer){
this.id = typeof(layer.id) != "undefined" ? layer.id : this.id;
this.items=layer.items;
return this;
},
draw : function () {
for(var i=0;i<this.items.length;i++){
this.items.draw();
}
}
}
return defaultLayer.init(layer);
};
var mLayer=new Scene.Layer({
id: "layer",
items: newItems
});
mLayer.draw();

};
init();
</script> [/code ]

作者: philippower   发布时间: 2013-10-03

that's not closure, not even close

a sample for you
复制内容到剪贴板代码:var Point = (function () {
function Point(i) {
this.x = i;
}
Point.prototype.draw = function () {
alert(this.x);
};
return Point;
})();

var Layer = (function () {
function Layer() {
this._points = [];
for (var i = 0; i < 10; i++) {
this._points.push(new Point(i));
}
}
Layer.prototype.draw = function () {
for (var i = 0; i < 10; i++) {
this._points[i].draw();
}
};
return Layer;
})();

var Scene = (function () {
function Scene() {
this.defaultLayer = new Layer();
}
return Scene;
})();

var layer = new Scene().defaultLayer;
layer.draw();

作者: form5   发布时间: 2013-10-03

sorry 误导咗你, 你跟 form5 做就 ok
引用:原帖由 philippower 於 2013-9-10 11:27 发表


Thanks!
但我加咗closure 都系咁,系咁ALERT出10




function init(){
var newItems = new Array();
// Create 10 new Items
for(i = 0;i< 10;i++) {
newItems.p ...

作者: a8d7e8   发布时间: 2013-10-03

Thanks!
为咗方便可在外建立完ITEM LIST先PUSH入LAYER,
唔大改STRUCTURE , 只有系ITEM 加个INDEX 去SAVE低个i.
复制内容到剪贴板代码:for(i = 0;i< 10;i++) {
newItems.push({
index:i,
id: "item-"+i,
x: 0,
y: 0,
draw: function () {
if(index> 0) {
alert(index);
}
}
});
}

作者: philippower   发布时间: 2013-10-03

热门下载

更多