Javascript 如何将字符串转换为对象

Javascript 如何将字符串转换为对象,javascript,html,string,object,Javascript,Html,String,Object,我是编程新手,我想通过做一个小项目来发展我的技能 我正在使用HTML/JavaScript创建一个数独应用程序。我在HTML中有大量(81)的“div”元素,我想通过更改它们的内部HTML来为它们分配内容。使用这两个for循环,我遍历了所有81个变量,并在“x”中重新创建它们的名称,然后将其传递给assign_cell(),以组装代码 puzzle \u inc持有拼图本身(9..47.8.2..821..etc;“”表示空单元格),我使用计数器函数逐个遍历其字符,将它们分配给每个“div” 经

我是编程新手,我想通过做一个小项目来发展我的技能

我正在使用HTML/JavaScript创建一个数独应用程序。我在HTML中有大量(81)的“div”元素,我想通过更改它们的内部HTML来为它们分配内容。使用这两个for循环,我遍历了所有81个变量,并在“x”中重新创建它们的名称,然后将其传递给assign_cell(),以组装代码

puzzle \u inc持有拼图本身(9..47.8.2..821..etc;“”表示空单元格),我使用计数器函数逐个遍历其字符,将它们分配给每个“div”

经过大量的测试和搜索,我发现我的问题是x是“string”类型,assign_cell()中的代码无法工作。在这种情况下,x将始终等于类似“c01”的值

我一直在尝试将x转换为对象类型。我曾尝试使用JSON.parse()来解决这个问题,但可能是因为我缺乏这方面的知识,所以没有成功

我不知道还有什么办法,但我非常感谢您的帮助

多谢各位

function assign_cell(flag, arr1, arr2) {
    if(flag === 1) {
        arr1.innerHTML = puzzle_inc[arr2];
    } else if(flag === 2) {
        arr1.innerHTML = null;
    } else {
        alert("Error in function assign_cell()");
    }   
}

for(var i = 0; i < 9; i++){
    for(var k = 0; k < 9; k++){
        var a = counter();
        var x = "c"+i+k;
        if(puzzle_inc[a] != '.') {
            assign_cell(1, x, a);
        } else {
            assign_cell(2, x, a);
        }
    }
}
函数分配\单元(标志、arr1、arr2){
如果(标志===1){
arr1.innerHTML=puzzle_inc[arr2];
}else if(标志===2){
arr1.innerHTML=null;
}否则{
警报(“函数赋值\单元()中的错误”);
}   
}
对于(变量i=0;i<9;i++){
对于(var k=0;k<9;k++){
var a=计数器();
var x=“c”+i+k;
如果(拼图公司[a]!='。){
分配_单元(1,x,a);
}否则{
分配_单元(2,x,a);
}
}
}
编辑:我被要求提供完整的代码,以便更好地帮助回答我的问题。请在下面找到。谢谢你的回答

你试过eval()吗


为什么不把html部分也包括进来,它会帮助其他人正确回答。X不是一个html元素,所以你不能为它设置innerHTML。您需要在assign_cell函数中按照document.getElementById(arr1.innerHTML=puzzle_inc[arr2]的思路做一些事情,但是很难说这是否正是需要的,因为您还没有发布HTML,我们也不知道
puzzle_inc
变量是什么,或者
计数器()
函数不起作用。当你打开你的控制台时,你有没有遇到任何错误?(快捷方式通常是F12)正如@Our_Benefactors所评论的,x不是一个HTML元素,因此你不能这样对待它。很可能,您需要一个函数来创建HTML元素,并像id属性一样使用
x
,id属性应该是唯一的。哦,对不起,应该提到这一点!之前,我使用“document.getElementByID”将每个HTML ID分配给一个JS变量。因此,如果x=c00,它实际上是document.getElementById('c00')。下面是我剩下的代码:(PHP)和(JS)。谢谢你的建议!我以前曾试图使用它,将整个语句与它一起封装起来(即,
eval(arr1.innerHTML=puzzle_inc[arr2]
),但当这不起作用时,我放弃了这条途径。尝试
eval(arr1.innerHTML=puzzle_inc[arr2]
但实际有效!我不知道为什么-也许JS计算字符串并将其视为变量名,因此将其替换为该变量而不是字符串?我不清楚,但感谢您的帮助!问题已解决。
var stringval='[1,2,3]';
var value=eval(stringval);
console.log(value);//=>[1, 2, 3]