我想将具有不同扩展名选项的不同选择器放到一页上。因此,我在网站的不同位置插入了<div class="dropbox-chooser"></div>。然后,我在脑海中写下了以下函数(用于测试):

window.onload = function() {
if (document.getElementsByClassName("dropbox-chooser")) {

for(var i = 0; i < document.getElementsByClassName("dropbox-chooser").length; i++){
if (i === 0) {
options.extensions = ['.zip','.exe','.rar','.7zip','.php','.html','.css','.js'];['.3gp','.3gpp','.3gpp2','.avi','.mov','.mp4','.wmv','.m4v','.mpg','.mkv','.mpeg','.vob','.flv','.mts','.m2t','.ts','.dv'];
button = Dropbox.createChooseButton(options);alert(options.toSource());
document.getElementsByClassName("dropbox-chooser")[i].appendChild(button);
}
if (i === 2) {
options.extensions = ['.3gp','.3gpp','.3gpp2','.avi','.mov','.mp4','.wmv','.m4v','.mpg','.mkv','.mpeg','.vob','.flv','.mts','.m2t','.ts','.dv'];
button = Dropbox.createChooseButton(options);alert(options.toSource());
document.getElementsByClassName("dropbox-chooser")[i].appendChild(button);
}
}
}
}


并且两个选择器显示在正确的位置,但是当我单击一个选择器按钮时,尽管options.toSource()函数为每个对象显示正确的对象内容,但extensions选项始终是最后一个(.3gp ...)按钮。

你能帮我么?
非常感谢!

丹尼斯

最佳答案

我相信直到实际打开选配器,选配器才会查看options对象。

您应该每次都传递一个不同的对象。

编辑

这是我的建议:

var choosers = document.getElementsByClassName('dropbox-chooser');
for (var i = 0; i < choosers.length; i++) {
    var options = {
        // ...
    };
    if (i === 0) {
        options.extensions = ['.zip', '.exe' /* ... */];
    } elif (i === 2) {
        options.extensions = ['.3gp', '.3gpp' /* ... */];
    }
    choosers[i].appendChild(Dropbox.createChooseButton(options));
}

09-26 22:33
查看更多