2013-02-11 97 views
0

我正在構建基於JSON數據的HTML字符串。在HTML中是<select>及其<option>。如果<option>的值與某些JSON數據相同,那麼它也包含selected="selected"屬性和選項標記。之後,整個shebang被編輯爲.append()選定的選項不會在append()後顯示爲selected()

所有這些似乎工作正常和丹迪,除了選定的選項沒有被選中。在Chrome的Web開發工具中檢查代碼顯示selected="selected"屬性存在。做一個console.log():selected選項選擇它們。但是,當我深入查看某個特定的<option>並查看它時,顯示的selected屬性設置爲false

Wha ...?

我試過使用.select().attr("selected","selected")事後強制jquery方法的問題,但都沒有任何區別。

其他人可以弄清楚發生了什麼嗎?這可能只是我的愚蠢無知,但在我看來,它應該起作用。

參考代碼。 dataArray是一個對象數組。 $display是jQuery的包裹<table>的HTML是.append() ING於:

$orderNumberField = jQuery("#orderNumber"); 
_orderNumberArray = $.parseJSON($orderNumberField.val()); 

for(n in dataArray) { 
    var _displayString = ""; 

     // ... other table data cells ... 

    _displayString += "<td><select class='orderNumSelect'>"; 
    _displayString += " <option value=''></option>"; 
    for(i in _orderNumberArray){ 
     _displayString += "<option value='" + _orderNumberArray[i] + "'"; 
     if(dataArray[n].orderNum == _orderNumberArray[i]) _displayString += " selected='selected'"; 
     _displayString += ">" + _orderNumberArray[i] + "</option>"; 
    } 
    _displayString += "</select></td>"; 

     // ... still other table data cells ... 

    $display.append(_displayString); 
} 
+0

當您說:「但是,當我鑽取到特定的

+0

在DOM瀏覽器中。 – 2013-02-11 20:23:02

回答

0

我不知道什麼是不工作的代碼,但你可以嘗試生成元素,而不是附加的文字。我測試了這個代碼,它工作正常

<script> 
    var dataArray=["test","testm2","Tasat3"]; 
     function append(){ 
      var td=document.createElement("td"); 
      var sel=document.createElement("select"); 
      var o=document.createElement("option"); 
      sel.appendChild(o); 
      for (n in dataArray){ 
       o=document.createElement("option"); 
       o.value=dataArray[n]; 
       o.text=dataArray[n]; 
       if (n==1) o.selected=true; 
       sel.appendChild(o); 
      } 
      td.appendChild(sel); 

      document.getElementById("display").appendChild(td); 
     } 
     append(); 
    </script> 
+0

我希望我不需要使用這些DOM元素而不是字符串,但是如果是這樣的話......我會給它一個運行並回復結果。 – 2013-02-11 20:25:26

0

事實證明,上面列出的代碼對我描述的行爲沒有錯。在其他代碼之後執行重置表單輸入。其他代碼中的jQuery選擇器編寫得過於普遍,並且在不應該使用生成的選擇字段的時候。

謝謝所有的評論者。我最終重寫了使用DOM元素的代碼,而不是生成一個更容易閱讀的字符串。萬歲無意的副作用。

相關問題