【问题标题】:Loop within javascript objectjavascript对象内的循环
【发布时间】:2013-05-28 09:39:01
【问题描述】:

我正在尝试使用 javascript 显示下拉列表。这是我的代码:

function monthlistview()
{
var monthlist=document.getElementById("monthlist");
document.getElementById("favorite").value=monthlist.options[monthlist.selectedIndex].text;
if(document.getElementById("favorite").value=='Feb'){
var myobject = {};
for (var x = 0; x <= 28; x++) {
myobject[x] = {x: x}; //should display 1-28
}
var select = document.getElementById("daylist");
for(index in myobject) {
select.options[select.options.length] = new Option(myobject[index], index);
}
}
}

我希望当用户选择 2 月作为月份时,天数选项将自动设置为 28 天。如何在 myobject 变量中显示它?我想使用循环来做到这一点。

或者有没有更简单的方法来做到这一点?谢谢!

【问题讨论】:

    标签: javascript variables date object option


    【解决方案1】:
    myobject[x] = {x: x}; //should display 1-28
    

    然后使用这些数字,而不是具有x 属性的对象:

    myobject[x] = x;
    

    但是,您根本不应该使用 myobject - 它的属性没有排序,并且可以使用您的 for-in 循环以任何顺序枚举。只需将new Option(…) 的东西直接放在for循环中即可:

    var monthlist = document.getElementById("monthlist"),
        favorite = document.getElementById("favorite"),
        select = document.getElementById("daylist");
    var month = favorite.value = monthlist.options[monthlist.selectedIndex].text;
           // I'd suggest using `monthlist.value` if that is the same
    var days =  month == 'Feb' ? 28 : 31; //???
    for (var index=0; index<days; index++) {
        select.add( new Option(index, index+1) );
    }
    

    【讨论】:

    • 即便如此,也需要var myobject = [];
    • @PrasathK:不,为什么?任何对象都可以有属性。
    • 对不起,我认为它是一个对象数组
    • 这太棒了!非常感谢! :)
    猜你喜欢
    • 1970-01-01
    • 2017-10-11
    • 2017-01-25
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2020-11-30
    相关资源
    最近更新 更多