2014-08-28 53 views
0

我已经做了一个循环到动态表行中的几个字段来写入和从本地存储检索数据。javascript循环不写入数字输入

它首先将数据保存在localstore上,将表重置为0行并用于检索数据,表格行将被重新创建并在那里加载数据。问题是当文本框是“数字”类型时,该字段显示为空白。当我在数字字段的占位符值上尝试它时,它会在各个字段上加载数据,以便查看数据。

这只发生在表的动态行中的循环字段上。来自固定行的数字输入可以正确加载。

该ID的我在那里循环使用正确和版画

document.getElementById('4-4-1').value = 2"

4-4-1 = x-y-z 
x = tableNumber 
y = FieldNumber 
z = RowNumber 

但是,当我在控制台上再次粘贴document.getElementById('4-4-1').value,它没有返回。 (虽然字段中出现占位符“2”)。

我也试着改变控制台中同一行的值,它能正常工作。

为什么它在循环过程中不在数字字段上工作?

在Chrome,Firefox上试用过。瞄准Android 4.2网络视图。

的商店循环

function saveRecordNow() { 
var rec = {}; 
rec[0] = document.getElementById('data0').value 
rec[1] = document.getElementById('data1').value 
rec[2] = document.getElementById('otherdata').value 
rec[3] = document.getElementById('foo').value 
... 
... 
var tblSpaceQtr = document.getElementById('tblSpaceQtr'); 

rowCnt = tblSpaceQtr.getElementsByTagName("tr").length - 11; 
//there are 11 fixed rows on the table, and is not included on the count 


//var page4Data = ''; 
for(x=1; x <= rowCnt; x++) { 
    page4Data += document.getElementById("4-1-"+x).value + ', '+ 
    document.getElementById("4-2-"+x).value + ', '+ 
    document.getElementById("4-3-"+x).value + ', '+ 
    document.getElementById("4-4-"+x).value + ', '+ 
    document.getElementById("4-5-"+x).value + ', '+ 
    document.getElementById("4-6-"+x).value + ', '+ 
    document.getElementById("4-7-"+x).value + ', '+ 
    document.getElementById("4-8-"+x).value + ', '+ 
    document.getElementById("4-9-"+x).value + ', '+ 
    document.getElementById("4-10-"+x).value + ', '+ 
    document.getElementById("4-11-"+x).value + ', '+ 
    document.getElementById("4-12-"+x).value + ', '+ 
    document.getElementById("4-13-"+x).value + ', '+ 
    document.getElementById("4-14-"+x).value + ', '+ 
    document.getElementById("4-15-"+x).value + ', '+ 
    document.getElementById("4-16-"+x).value + ', '+ 
    document.getElementById("4-17-"+x).value + ', '+ 
    document.getElementById("4-18-"+x).value + ', '+ 
    document.getElementById("4-19-"+x).value + ', '+ 
    document.getElementById("4-20-"+x).value + ', '+ 
    document.getElementById("4-21-"+x).value + ', '+ 
    document.getElementById("4-22-"+x).value + ', '+ 
    document.getElementById("4-23-"+x).value + '||| '; 
    //console.log("data from 4-1-"+x); 
} 
page4Data.substring(0, page4Data.length - 2); //remove end comma 
//alert() 
rec[681] = page4Data; 

... 
} 

的检索循环

function loadRecord(n) { 

var getVar = JSON.parse(localStorage.getItem(n)); 
document.getElementById('id').value = n; 
numCells = document.getElementById('nbcells'); 

document.getElementById('data0').value = getVar[0]; 
document.getElementById('data1').value = getVar[1]; 
document.getElementById('otherdata').value = getVar[2]; 
document.getElementById('foo').value = getVar[3]; 
document.getElementById('foo2').value = getVar[4]; 
document.getElementById('foo3').value = getVar[5]; 
... 

initTable(numCells, numCells.value) 
var pg4Data = [], 
pg4RowData = [], 
pg4Data = getVar[681].split('|||'); 
page4Data = getVar[681] 
//getVar[681] from JSON.parse(localStore['source']); 
//having a csv separated by '|||' per row 

for(x=1; x < pg4Data.length; x++) { 
    pg4RowData = pg4Data[x-1].split(','); 
    document.getElementById("4-1-"+x).value = pg4RowData[0];  
    document.getElementById("4-2-"+x).value = pg4RowData[1]; 
    document.getElementById("4-3-"+x).value = pg4RowData[2]; 
    document.getElementById("4-4-"+x).value = pg4RowData[3]; 
    console.log("document.getElementById('4-4-"+x+"').value =" +pg4RowData[3]); 
     document.getElementById("4-4-"+x).placeholder = pg4RowData[3]; 
    //document.getElementById("4-4-"+x).setAttribute('value', pg4RowData[3]); 
    //document.getElementById("4-5-"+x).value = pg4RowData[4]; 
    document.getElementById("4-5-"+x).value = pg4RowData[4]; 
     document.getElementById("4-5-"+x).placeholder = pg4RowData[4]; 
    document.getElementById("4-6-"+x).value = pg4RowData[5]; 
     document.getElementById("4-6-"+x).placeholder = pg4RowData[5]; 
    document.getElementById("4-7-"+x).value = pg4RowData[6]; 
     document.getElementById("4-7-"+x).placeholder = pg4RowData[6]; 
    document.getElementById("4-8-"+x).value = pg4RowData[7]; 
     document.getElementById("4-8-"+x).placeholder = pg4RowData[7]; 
    document.getElementById("4-9-"+x).value = pg4RowData[8]; 
     document.getElementById("4-9-"+x).placeholder = pg4RowData[8]; 
    document.getElementById("4-10-"+x).value = pg4RowData[9]; 
    document.getElementById("4-11-"+x).value = pg4RowData[10]; 
    document.getElementById("4-12-"+x).value = pg4RowData[11]; 
    document.getElementById("4-13-"+x).value = pg4RowData[12]; 
    document.getElementById("4-14-"+x).value = pg4RowData[13]; 
    document.getElementById("4-15-"+x).value = pg4RowData[14]; 
    document.getElementById("4-16-"+x).value = pg4RowData[15]; 
    document.getElementById("4-17-"+x).value = pg4RowData[16]; 
    document.getElementById("4-18-"+x).value = pg4RowData[17]; 
    document.getElementById("4-19-"+x).value = pg4RowData[18]; 
    document.getElementById("4-20-"+x).value = pg4RowData[19]; 
    document.getElementById("4-21-"+x).value = pg4RowData[20]; 
    document.getElementById("4-22-"+x).value = pg4RowData[21]; 
    document.getElementById("4-23-"+x).value = pg4RowData[22]; 
} 
... 
} 
+2

请创建一个完全演示问题的简化测试用例。它需要包含一些HTML和加载脚本的机制。 JSBin或JSFiddle的现场示例会很有帮助。 – Quentin 2014-08-28 08:30:22

+2

只需提醒HTML4:'ID和NAME标记必须以字母([A-Za-z])开头,后面可以跟随任意数量的字母,数字([0-9]),连字符(“ - ” ),下划线(“_”),冒号(“:”)和句点(“。”)。 – DoXicK 2014-08-28 08:32:59

+0

pg4RowData不是你期望的那样吗? – GuardianX 2014-08-28 09:00:10

回答

0

元素的标识,类名,并在JavaScript 变量不能以数字开始!请在字符前加上值,然后重试。

for(x=1; x < pg4Data.length; x++) { 
    pg4RowData = pg4Data[x-1].split(','); 
    document.getElementById("s-4-1-"+x).value = pg4RowData[0];  
    document.getElementById("s-4-2-"+x).value = pg4RowData[1]; 
    document.getElementById("s-4-3-"+x).value = pg4RowData[2]; 
    document.getElementById("s-4-4-"+x).value = pg4RowData[3]; 
+0

嗨@Praveen,我试着像'document.getElementById(“row4-1 - ”+ x)''这样做,但在浏览器上不行。我在chrome控制台上执行了这个命令,它改变了这个值,所以我仍然认为这是循环。当字段创建并且工作时,我也尝试将字段类型更改为“文本”。同时,我会尝试做一个JSFiddle。谢谢大家回复 – niCad 2014-08-28 08:53:11

+0

@niCad是的,做一个jsFiddle将是一个好主意。我正在等待小提琴,以便我们检查出什么问题! – 2014-08-28 08:53:51