0

我想遍历 IndexedDB objectStore,获取结果并填充此选择框。

这是我的 HTML

 <tr>
    <td>
       <select id="opt" name="opt"></select>
    </td>
 </tr>

这是我的 JavaScript

function populateOptions() {
  var options = [ "1", "2", "3", "4", "5"];
  var opt = document.getElementById("opt");

  for (var i = 0; i < options.length; i++) {
    var option = document.createElement("option");
    option.value = options[i];
    var optionText = document.createTextNode(options[i]);
    option.appendChild(optionText);
    opt.appendChild(option);
  }

}

populateOptions();   
4

2 回答 2

1

尝试以下操作:

var dbreq = indexeddb.open("db");
dbreq.onsuccess = function (conn){
    var trans = dbreq.result.transaction(["objectstore"]);
    var obj = trans.objectStore("objectstore");
    var cursor = obj.openCursor();
    cursor.onsuccess = function (e) {
            if (!cursor.result) {
               var opt = document.getElementById("opt"); 
               var option = document.createElement("option");
               option.value = cursor.result.value;                
               var optionText = document.createTextNode(cursor.result.value);                
               option.appendChild(optionText);
               opt.appendChild(option); 
               cursor["continue"]()
            } else {
               // cursor ended
            }
}

或者使用我的linq2indexeddb 库并这样做:

var db = linq2indexedDB("db");
db.linq.from("objectstore").select.then(null, null, function(e){
    var opt = document.getElementById("opt"); 
    var option = document.createElement("option");
    option.value = e.data;                
    var optionText = document.createTextNode(e.data);                
    option.appendChild(optionText);
    opt.appendChild(option); 

});

有关 indexeddb 的更多信息,我可以参考我的博客。在这里,我经常发布有关 indexedDB API 的信息。

于 2012-09-25T05:17:29.930 回答
1

在 html 中:

<body onload="load()">

在 javascript 中:

function load(){
    populateOptions();
}

或很快:

<body onload="populateOptions()">
于 2012-09-24T15:45:05.753 回答