2015-02-11 86 views
0

在我的Angular應用程序中,我應該列出過去7天在選擇標籤與表單中,作爲它的一部分,我設法以簡單的方式列出它們,代碼如下:最近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); 
      } 

     } 

所以在這裏2個問題:

1)該HTML我應該把它們放在一個表單標籤,但正如我理解的嵌套form標籤是不允許的迄今在HTML(????),如何克服這個問題?

2)本以上解決方案僅無角,如果我在我的實際角度的應用程序放在相同的代碼它不工作(prevdays),它只是顯示只有一個option即,<option selected value="#">pick one</option>

在DOM樹

FYI:控制檯誤差

遺漏的類型錯誤:無法讀取屬性 'prevdays' 的定義。

任何形式的幫助非常感謝,感謝您的時間。

+0

你可能會更好地使用類似於moment.js和循環中的減法功能:http://momentjs.com/docs/#/manipulating/subtract/ – Magrangs 2015-02-11 15:38:00

回答

0
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元素,因此您不必擔心嵌套表單。