2015-06-23 21 views
0

我是Javascript新手,我一直在嘗試使用for循環的Javascript表格。我想獲得一個細胞的價值。我正在做一個「Excel應用程序」。請檢查什麼是錯的。我只是固定的東西,答案....Javascript表格用於

var MatriXcel = (function(window, undefined) { 
 

 
    var matriz = []; 
 
    var matrizJson; 
 
    var row = 5; 
 
    var col = 6; 
 

 
    function getData(){ 
 
    return matriz; 
 
    } 
 

 

 
    function addRow(){ 
 
    var newCol = []; 
 
    for (var i=0; i < col; i++){ 
 
     newCol.push(""); 
 
    } 
 
     matriz.push(newCol); 
 
     this.draw(); 
 
    } 
 

 
    function drawTable(){ 
 
    var table = "<tr><th></th><th>A</th><th>B</th><th>C</th><th>D</th><th>E</th></tr>"; 
 
    for (var i=0; i < matriz.length; i++){ 
 
     table += "<tr>"; 
 
     for (var x=0; x < matriz[i].length; x++){ 
 
     if (x == 0){ 
 
      table += "<th>"+(i+1)+"</th>"; 
 
     }else{ 
 
     table += "<td><input type='text' onkeyup='MatriXcel.save("+i+","+x+",this)' value='"+matriz[i][x]+"'></td>"; 
 
     } 
 
     } 
 
     table += "</tr>"; 
 
    } 
 
    document.getElementById("tabla").innerHTML = table; 
 
    } 
 

 
    function saveInfo(irow, xcol, content){ 
 
    matriz[irow][xcol] = content.value; 
 
    } 
 

 

 
    function getMatch(){ 
 
    var tabla = document.getElementById("tabla"); 
 
    search= document.getElementById("word").value; 
 
    var re = new RegExp(search,"gi"); 
 
    var row; 
 
    var col; 
 
    for (var i = 0; i< tabla.rows.length; i++){ 
 
     row = tabla.rows[i]; 
 
      for (var j; j<row.cells.length; j++){ 
 
       col = row.cells[j]; 
 
       if(re.test(row.textContent)){ 
 
        row.style.color="rgb(239, 19, 109)"; 
 
        alert(row.textContent); 
 

 
       }else if(re.test(col.textContent)){ 
 
        col.style.color="rgb(79, 2, 133)"; 
 
       } 
 

 
      } 
 

 
    } 
 

 

 
    } 
 

 
    function saveLocal(){ 
 

 
    matrizJson = JSON.stringify(matriz); 
 
    console.log(matrizJson); 
 
    window.localStorage.table = matrizJson; 
 

 
    // matrizJson = JSON.parse(matrizJson); 
 
    // console.log(matrizJson); 
 

 
    } 
 

 
    function init(){ 
 
    if(typeof window.localStorage.table === 'string'){ 
 
     matriz = JSON.parse(window.localStorage.table); 
 
     this.draw(); 
 
    } 
 
    } 
 

 
    return { 
 
    addRow : addRow, 
 
    draw : drawTable, 
 
    save : saveInfo, 
 
    get : getData, 
 
    local : saveLocal, 
 
    init : init, 
 
    search : getMatch, 
 
    }; 
 

 
})(window); 
 
if (window.localStorage.length == 0){ 
 
    MatriXcel.addRow(); 
 
    MatriXcel.addRow(); 
 
    MatriXcel.addRow(); 
 
    MatriXcel.addRow(); 
 
    MatriXcel.addRow(); 
 
}else{ 
 
    MatriXcel.init(); 
 
}
<!DOCTYPE html> 
 
<html lang="en"> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>ExcelApp</title> 
 
    <link rel="stylesheet" type="text/css" href="style.css"> 
 
</head> 
 

 
<body> 
 
    <input type="search" value="" placeholder="write here" id="word"> 
 
    <input type="button" value="Search" id="trigger" onclick="MatriXcel.search()"> 
 
    <table id="tabla"> 
 

 
    </table> 
 
</body> 
 
<script type="text/javascript" src="script.js"></script> 
 

 

 
</html>

+1

'tr's沒有'value',你必須以nikhil在他們的答案中提出的方式檢查'col.textContent'或'col.innerHTML',而不是'row.value'。 – Teemu

+0

@Teemu - 我錯過了價值的一部分。感謝您的加入。我已經更新了答案。 – nikhil

回答

2

似乎有你檢查的正則表達式的方式的問題。

例如,代替這個

if(re == row.value){ 

應該

if(re.test(row.value)){ 

此外,請更新代碼由@Teemu的意見建議

你必須檢查col.textContent或col.innerHTML,而不是row.value

+0

謝謝你們....現在我意識到我的問題是什麼,但我仍然無法修復它...儘管我寫了些東西,但單元格返回了一個空字符串! – AaronR

+0

沒問題。你可以分享一個蹦牀/小提琴嗎? – nikhil

+2

@AaronR您的手機是否包含「」元素?然後,您需要從該元素中獲取值,而不是單元格。如果你展示了整個HTML,這將有所幫助。 – Barmar