使用javascript从表单中检索值

时间:2014-05-23 18:26:49

标签: javascript arrays dom

尝试将我的数独求解算法(现在可以使用!)移植到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/

2 个答案:

答案 0 :(得分:1)

i.string应为i.toString(),当您的选择列表的ID为sudokuCellxx时,您的选择器正在查找ID sudokuxx

答案 1 :(得分:0)

这是我刚刚在大约4分钟内写完的答案。

http://jsfiddle.net/69b5p/

//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]; }