0

javascriptアプリケーションでdivをドラッグした後...すべてのdivに、位置順に数値クラスを割り当てたいと思います。私はたくさんの研究をして、次のものを作りました...しかしそれはうまくいきません。(内部HTMLは変更されません)

var ele = document.getElementsByTagName("div");
var i = 0;
var MyDrags = [];

while(ele[i]) {
    if(ele[i].id.substr(0, 4)=="drag") {
        MyDrags["distance"]=parseInt(document.getElementById(ele[i].id).style.top,10);
        MyDrags["id"]=ele[i].id;
    }
    i++;
}
MyDrags.sort(function(a,b) {
    return a.distance - b.distance;
});
i = 0;
while(MyDrags["distance"][i]) {
    document.getElementById(MyDrags["id"][i]).innerHTML=MyDrags["distance"][i];
    i++;
}
4

1 に答える 1

2

これは、以前の値を上書きしているためです。コードを機能させるには、反復ごとに新しいオブジェクトを割り当てる必要があります。次のようになります。

var ele = document.getElementsByTagName('div');
var i = 0;
var MyDrags = [], dst;

while (ele[i]) {
    if (ele[i].id.substr(0, 4) === 'drag') {
        MyDrags.push({
            distance: parseInt(document.getElementById(ele[i].id).style.top, 10),
            id: ele[i].id
        });
    }
    i++;
}

MyDrags.sort(function(a, b) {
    return a.distance - b.distance;
});

i = 0; 
while(MyDrags[i]) {
    if (dst = MyDrags[i]['distance']) {
        document.getElementById(MyDrags[i]['id']).style.top = dst + 'px';
        document.getElementById(MyDrags[i++]['id']).innerHTML = dst;
    }
}
于 2012-07-31T12:34:23.733 に答える