2015-09-28 63 views
0

在函數clueClicked中,我試圖從數組中拉出值並更改表的innerHTML,這在某種程度上不起作用。在控制檯上沒有錯誤。請幫忙。我正在使用<td>的ID來更改元素的內容。document.getElementById()。innerHTML不工作,在控制檯上沒有錯誤

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<title>Cross word Puzzel</title> 
 
<style> 
 
#puzzel { 
 
\t width:330px; 
 
\t margin: 0; 
 
\t padding: 0; 
 
\t border-collapse: collapse; 
 
\t border: 1px solid black; 
 
} 
 
#cross{ 
 
\t text-align: center; 
 
\t width:30px; 
 
\t height:30px; 
 
\t margin: 0; 
 
\t padding: 0; 
 
\t border-collapse: collapse; 
 
\t border: 1px solid white; 
 
} 
 

 

 
#buttons{ 
 
\t width:30%; 
 
\t float: right; 
 

 
} 
 
tr{ 
 
\t margin: 0; 
 
\t padding: 0; 
 
\t border-collapse: collapse; 
 
} 
 
#leftBox{ 
 
\t float: left; \t 
 
} 
 
#rightBox{ 
 
\t float: left; 
 
} 
 
.butt{ 
 
\t height:50px; 
 
\t width: 100px; 
 
} 
 
#puzzel{ 
 
\t text-align: center; 
 
} 
 
.tableBox{ 
 
\t \t width: 30px; 
 
\t \t height:30px; 
 
\t \t border: 1px solid black; 
 
\t \t text-align: center; 
 
} 
 
</style> 
 

 
<script> 
 

 
var currentTextInput; 
 
var puzzelArrayData; 
 

 
function initializeScreen(){ 
 

 
\t var puzzelTable = document.getElementById("puzzel"); 
 
\t puzzelArrayData = preparePuzzelArray(); 
 

 
\t for (var i = 0; i < puzzelArrayData.length ; i++) { 
 
\t \t var row = puzzelTable.insertRow(-1); 
 
\t \t var rowData = puzzelArrayData[i]; 
 
\t \t for(var j = 0 ; j < rowData.length ; j++){ 
 
\t \t \t var cell = row.insertCell(-1); 
 
\t \t \t if(rowData[j] != 0){ 
 
\t \t \t \t var txtID = String('txt' + '_' + i + '_' + j); 
 
\t \t \t \t cell.innerHTML = '<input type="text" class="tableBox" maxlength="1" style="text-transform: lowercase" ' + 'id="' + txtID + '" onfocus="textInputFocus(' + "'" + txtID + "'"+ ')">'; 
 
\t \t \t }else{ 
 
\t \t \t \t cell.innerHTML = "1"; 
 
\t \t \t \t cell.style.backgroundColor = "black"; 
 
\t \t \t } 
 
\t \t } 
 
\t } 
 

 
} 
 

 
function textInputFocus(txtID123){ 
 
\t currentTextInput = txtID123; 
 
} 
 

 
function preparePuzzelArray(){ 
 
var items = [ \t [0, 0, 0, 0, 'p', 0, 0, 0, 0, 0, 0], 
 
\t \t \t \t [0, 0, 0, 0, 'u', 0, 0, 0, 0, 0, 0], 
 
\t \t \t \t [0, 0, 0, 0, 'n', 0, 'b', 0, 0, 0, 0], 
 
\t \t \t \t [0, 'h', 'y', 'd', 'e', 'r', 'a', 'b', 'a', 'd', 0], 
 
\t \t \t \t [0, 0, 0, 0, 0, 0, 'n', 0, 0, 'e', 0], 
 
\t \t \t \t [0, 0, 0, 0, 0, 0, 'g', 0, 0, 'l', 0], 
 
\t \t \t \t [0, 0, 'm', 'u', 'm', 'b', 'a', 'i', 0, 'h', 0], 
 
\t \t \t \t [0, 0, 0, 0, 0, 0, 'l', 0, 0, 'i', 0], 
 
\t \t \t \t [0, 0, 0, 0, 0, 0, 'o', 0, 0, 0, 0], 
 
\t \t \t \t ['k', 'a', 's', 'h', 'm', 'i','r', 0, 0, 0, 0], 
 
\t \t \t \t [0, 0, 0, 0, 0, 0, 'e', 0, 0, 0, 0] 
 
\t \t \t ]; 
 
return items; 
 
} 
 
function solveClicked(){ 
 
var testString = 'txt_12_15'; 
 
var tokens = testString.split('_'); 
 
alert(tokens); 
 
} 
 

 
function clearAllClicked(){ 
 
\t currentTextInput = ''; 
 
\t var puzzelTable = document.getElementById("puzzel"); 
 
\t puzzelTable.innerHTML = ''; 
 
    initializeScreen(); 
 
} 
 
function checkClicked(){ 
 

 
\t for (var i = 0; i < puzzelArrayData.length ; i++) { 
 
\t \t var rowData = puzzelArrayData[i]; 
 
\t \t for(var j = 0 ; j < rowData.length ; j++){ 
 
\t \t \t if(rowData[j] != 0){ 
 
\t \t \t \t var providedValue = document.getElementById('txt' + '_' + i + '_' + j).value; 
 
\t \t \t \t if(providedValue != puzzelArrayData[i][j]){ 
 
\t \t \t \t \t console.log('Wrong entry found: ' + providedValue + " at " + i + j); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t } 
 
\t } 
 
} 
 

 
function clueClicked(){ 
 
\t var temp1 = currentTextInput; 
 
\t var token = temp1.split("_"); 
 
\t var row = token[1]; 
 
\t var column = token[2]; 
 
\t document.getElementById(temp1).innerHTML = puzzelArrayData[row][column];//here is the problem. 
 
\t \t 
 
\t \t 
 
\t 
 
} 
 
</script> 
 
</head> 
 
<body onload="initializeScreen()"> 
 
<div id="leftBox"> 
 
<table id="puzzel"> 
 

 
</table> 
 
</div> 
 
<div id="rightBox"> 
 
<table> 
 
\t <tr><td><input class="butt" type="submit" value="Clear All" onclick="clearAllClicked()"></td></tr> 
 
\t <tr><td><input class="butt" type="submit" value="Check" onclick="checkClicked()"></td></tr> 
 
\t <tr><td><input class="butt" type="submit" value="Solve" onclick="solveClicked()"></td></tr> 
 
\t <tr><td><input class="butt" type="submit" value="Clue" onclick="clueClicked()"></td></tr> 
 
</table> 
 

 
</body> 
 
</html>

+0

是否所有的CSS都與你的問題真正相關? – nnnnnn

回答

0

這可能是因爲你試圖使用innerHTML輸入元素上。您應該嘗試使用value屬性。 innerHTML通常用於包含東西的元素,即div,span等...

0

嗨,嘗試檢查currentTextInput的值。因爲它是一個全局變量,可能是由它發起的錯誤,因爲你試圖將它存儲在另一個變量中。如果你有currentTextInput的期望值,只要直接把它放在「()」中,而不是將它保存到另一個變量中。

試試這個

function clueClicked(){ 
    //var temp1 = currentTextInput; 
    var token = temp1.split("_"); 
    var row = token[1]; 
    var column = token[2]; 
    document.getElementById(currentTextInput).innerHTML = puzzelArrayData[row][column];//here is the problem. 
    } 
0

是非常正確的。你必須使用value屬性而不是innerHTML。這是因爲innerHTML更像是靜態文本,而不是被設計爲接受用戶輸入。

function clueClicked(){ 
    var temp1 = currentTextInput; 
    var token = temp1.split("_"); 
    var row = token[1]; 
    var column = token[2]; 
    document.getElementById(temp1).value = puzzelArrayData[row][column];//here is the problem.we use value not innerHTML 
} 
相關問題