在不带表单的选定标记中的最后7天

Last 7 days in a select Tag without form

本文关键字:最后 7天 表单      更新时间:2023-09-26

在我的Angular应用程序中,我应该在一个表单中的select标签中列出过去的7天,作为其中的一部分,我设法以一种简单的方式列出了它们,代码如下:

HTML

<div>
    <form name="datelist">
        <select  name="prevdays" style="width:200px">
            <option selected value="#">pick one</option>
        </select>
    </form>
</div>

JS

   window.onload = function() {
            var noOfDays = 10;
            var msPerDay = 86400000;
            var months = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
            var d = document;
            console.log(document);
            var f = d.datelist;
            var s = f.prevdays;
            // change i to 1 if you want to start with yesterday.
            for (i = 0; i < noOfDays; i++) {
                var D = new Date();
                with(D) {
                    setTime(valueOf() - (i * msPerDay));
                }
/*                var txt = months[D.getMonth()] + ' ' + D.getDate() + ', ' + D.getFullYear();
*/
          var txt = D.getFullYear() + '-'+months[D.getMonth()] +'-'+ D.getDate() ;
                var val = D.getFullYear() + '' + (D.getMonth() + 1 < 10 ? '0' + (D.getMonth() + 1) : D.getMonth() + 1) + '' + (D.getDate() < 10 ? '0' + D.getDate() : D.getDate());
                s.options[s.options.length] = new Option(txt, val);
            }
        }

所以这里有两个问题:

1) HTML我应该把它们放在一个表单标记中,但据我所知,到目前为止,HTML中不允许嵌套的form标记(???),如何克服这个问题??

2) 上面的解决方案只在没有角度的情况下工作,如果我把这个相同的代码放在我真正的角度应用程序中,它就不工作了(以前),它只显示一个option,即<option selected value="#">pick one</option>

在DOM树中。

仅供参考:控制台错误为

未捕获的类型错误:无法读取未定义的属性"prevdays"。

非常感谢您的帮助,谢谢您抽出时间。

var f = d.datelist;

在这一行中,您试图按名称访问表单,但不能这样做。在HTML5中,不赞成按名称访问元素,因此应该使用ID。

var f = d.getElementById("datelist");
var s = f.children[0];     //You could also give it an ID if you prefer

这就是为什么它是未定义的。

您也可以在表单之外使用select元素,这样就不必担心嵌套表单了。