#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 likeid = "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(код));