как хранить значения в массиве

#javascript #jquery #html #arrays

#javascript #jquery #HTML #массивы

Вопрос:

В следующем коде я получаю отсканированное значение штрих-кода.

 var scanCode = function () {
window.plugins.barcodeScanner.scan(function(result) {
    alert("Scanned Code: "   result.text   ". Format: "   result.format   ". Cancelled: "   result.cancelled);
    localStorage.setItem("myvalue1", result.text);
    window.location.href = 'page5.html';
    var barcodeVal = localStorage.getItem("myvalue1");
    var test2 = localStorage.getItem("code");
    code = JSON.parse(test2);
    var k = parseInt(localStorage.getItem("counter"));
    document.getElementById(code[k]).innerHTML = barcodeVal;
    alert(code[k]);
    alert(k);
    k  ;
    localStorage["counter"] = k;
    localStorage.setItem("code", JSON.stringify(code));
}, function (error) {
    alert("Scan failed: "   error);
});
 

myvalue1 это значение, которое я получаю от сканирования. Я определил массив и счетчик в другом файле js как

 localStorage["counter"]=0;
var code = {};
localStorage.setItem("code", JSON.stringify(code));
 

Теперь я пытаюсь сохранить идентификатор в массиве code[] и пытаюсь его распечатать page5.html . Выше <script> также определено в том же page5.html . Также я снова и снова вызываю функцию сканирования, чтобы отсканировать несколько штрих-кодов. Я печатаю значение в html как

 <tr>
    <td>2</td>
    <td id="code[0]"></td>
</tr>
 

Я получаю сообщение об ошибке как Cannot set property 'innerHTML' of null . Что мне делать дальше? Пожалуйста, помогите мне. заранее спасибо

Ответ №1:

Как вы можете видеть из JsFiddle здесь, когда вы выполняете код [k] в инструкции

 document.getElementById(code[k]).innerHTML = barcodeVal;
 

код понимается не как массив строк, а как строка, поэтому при указании на code[0] он указывает не на ваш идентификатор, а на скобку.

Выполните JSON.parse() в своем коде, как в обновленном JsFiddle здесь

Комментарии:

1. Поскольку я должен сохранить, скажем n , количество штрих-кодов в массиве. Так что, если я вызываю массив var code = []; следующим образом и в случае объявления id в html like id = "test[0]" и аналогично . Правильно ли такое объявление?

2. Ваш метод объявления массива as var code = ["Test", "Test2"]; действителен для ограниченного набора записей, но если у меня их около 15-20, что мне делать?

3. Массивы Javascript принимают любое количество записей и смешанных типов. Определите его пустым и добавьте их позже. Вы можете протестировать его здесь jsfiddle.net/BygmL/2

4. Я объявил так, как вы мне сказали, но все равно получаю сообщение об ошибке.

5. сначала я объявил localStorage[«counter»]=0; var code = [«Test», «Test2″,»Test3»]; localStorage.setItem(«code», JSON.stringify(код));