尝试将我的数独求解算法(现在可以使用!)移植到javascript,并尝试从页面上的一系列下拉列表中检索初始值。下拉列表的基本格式如下:
<form action="">
<table>
<tr>
<td>
<select id="sudoku00">
<option value=0></option>
<option value=1>1</option>
...
</select>
</td>
...
</tr>
...
</table>
</form>
我尝试将这些javascript检索到数组的javascript如下所示,但似乎无法正常工作:
var grid=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]...]
for (var i=0; i<9; i++){
for (var j=0; j<9; j++){
var current=document.getElementById("sudokuCell"+i.string+j.string);
grid[i][j]=current.options[current.selectedIndex].value;
}
}
当没有任何下拉列表从空白处更改时,它最终将第一个单元格设置为未定义,其余为0,当我将下拉列表更改为空白以外的任何内容时,较小数组中的每个条目都将变为未定义。 如果这有任何不好的形式,请告诉我,我仍然是javascript的新手。
编辑:这是整个事情。抱歉坏ID,从记忆中输入并错过了。 http://jsfiddle.net/2Me7E/
答案 0 :(得分:1)
i.string
应为i.toString()
,当您的选择列表的ID为sudokuCellxx
时,您的选择器正在查找ID sudokuxx
。
答案 1 :(得分:0)
这是我刚刚在大约4分钟内写完的答案。
//make the grid
var $t = $("<table />"),
$r = $("<tr />"),
$c = $("<td />"),
$sel = $("<select />"),
$opt = $("<option />"),
result = $t.clone(),
selection = $sel.clone();
for (var i = 0; i<9; i++){
selection.append($opt.clone().val(i+1).text(i+1));
}
for (var i = 9; i; i--){
var row = $r.clone();
for (var j = 9; j;j--){
row.append($c.clone().append(selection.clone()));
}
result.append(row);
}
$("body").append(result);
然后你可以添加一些css:
table, tr, td{border: solid 1px black;}
修改:调整此小提琴(http://jsfiddle.net/X4fF3/),以便为您的ID分配并使用表单包装。
编辑2: http://jsfiddle.net/X4fF3/1/按从左到右的顺序给出所有数字的数组。
通过第二次编辑,您可以通过以下操作轻松找到属于哪里的所有内容:
9 * R + C%9其中R是行号,C是列。 (这是编程所以每个人实际上都是0-8。)
示例:
function get(R,C){ return array[9*R + C%9]; }