我直接将一个select对象放入数组后,发现取出来时对象里的所有options全部清空了,有什么办法可以将其放入数组后又能保留原数据取出呢?以下是我的代码:
listbox = $get(selectbox);
var selectBox = new Array(); 
selectBox.push(listbox);//取出时发现内容都为空了:
for (var i = 0, n = selectBox.length; i < n; i++) {  
   alert(selectBox[i].options[0].text);
}

解决方案 »

  1.   

    没发现有这中情况
    selectBox.length = 1应该是selectBox[0].options.length
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    </head><body>
    <select id='ss'>
      <option value="1">1111</option>
      <option value="2">2222</option>
      <option value="3">3333</option>
      <option value="4">4444</option>
    </select>
    <script>
    var $ = function(id){return document.getElementById(id)}
    var arr  = new Array()
    arr.push($('ss'))for (var i = 0, n = arr[0].options.length; i < n; i++) {  
       alert(arr[0].options[i].text);
    }
    </script>
    </body>
    </html>
      

  2.   

    哦,我发现如果单独拿出来这样写真的是没问题的,但由于我用的是.net ajax的提交方式,我是想在提交前保存当前的select对象,在提交后再获取出来以呈现提交之前的状态,我在JS里使用了类来保存的
    var cr=new Criteria();
    var $ = function(id){return document.getElementById(id)}cr.AddSelectBox($('ss'))
    cr.AddSelectBox($('s2'))var selec=cr.GetSelectBox();for (var a = 0, b = selec.length; a < b; a++) {  
    for (var i = 0, n = selec[a].options.length; i < n; i++) {  
       alert(selec[a].options[i].text);
    }
    }function Criteria() {
    this._selectBox = new Array();
    this.AddSelectBox = function(listbox) { this._selectBox.push(listbox); }
        this.GetSelectBox = function() { return this._selectBox; }}
    以上代码在独立的HTML页面运行正常,只是如果用在AjaxMethod的提交后就获取不了值了,但如果我只保存文本或者是其他对象(如DIV)的话又是可以获取的,为什么就是select对象不行呢?奇怪。
      

  3.   

    不好意思,刚才说错了,并不是用在AjaxMethod里,而是用在 .Net 的 UpdatePanel 的提交里
    (现在居然不能编辑自己的帖子了,记得以前可以的,郁闷.......)