Javascript 编辑元素属性不起作用

Javascript 编辑元素属性不起作用,javascript,html,dom,Javascript,Html,Dom,下面的代码应该允许我编辑p元素的属性。问题是它仍然是一样的。我在最后添加了一个测试来更改它的内容,但是它什么也不做。将显示编辑元素的文本字段并记录新属性,但元素不会更改 <body><p id=test>test</p> <script> var obj=document.getElementById("test") var display=""; for(var i in obj){ display+="<label for="+i

下面的代码应该允许我编辑p元素的属性。问题是它仍然是一样的。我在最后添加了一个测试来更改它的内容,但是它什么也不做。将显示编辑元素的文本字段并记录新属性,但元素不会更改

<body><p id=test>test</p>
<script>
var obj=document.getElementById("test")
var display="";
for(var i in obj){
    display+="<label for="+i+">"+i+"</label><input id="+i+" value='"+obj[i]+"' oninput='obj["+i+"]=this.value;
    console.log(obj["+i+"])'></input>"
}
document.body.innerHTML+=display
obj.innerHTML="hello"
</script>
</body>

测试

var obj=document.getElementById(“测试”) var display=“”; 用于(obj中的var i){ 显示+=“”+i+“” } document.body.innerHTML+=显示 obj.innerHTML=“你好”
不清楚您想做什么,请指定您想要的结果。

这段代码确实会影响DOM,但我不确定这是否是您想要的结果

测试

var obj=document.getElementById(“测试”).innerHTML var display=“”; 用于(obj中的var i){ 显示+=“”+i+“” } document.body.innerHTML+=显示 obj.innerHTML=“你好”
此修改的代码应允许您修改元素属性:

var obj = document.getElementById("test");
var display = "";
for (var i in obj) {
    display += "<label for='" + i + "'>" + i + "</label><input id='" + i + "' value='" + obj[i] + "' oninput='document.getElementById(\"test\")[\"" + i + "\"]=this.value;console.log(document.getElementById(\"test\")[\"" + i + "\"])'></input>";
}
document.body.innerHTML += display;
obj.innerHTML = "hello";
var obj=document.getElementById(“测试”);
var display=“”;
用于(obj中的var i){
显示+=“”+i+“”;
}
document.body.innerHTML+=显示;
obj.innerHTML=“你好”;

我基本上修正了代码中的引用。此外,由于某种原因,obj正在丢失对实际html元素的引用,因此使用document.getElement。。。相反。

第一个明显的问题:需要在

中引用,并且应该用分号(;)结束每个javascript行。首先要解决的是,您在字符串中包含了
console.log()
函数调用,这破坏了语法。代码在此修复之后工作-不需要引号,只要它没有空格,并且除了一些罕见的异常(如for loops),分号是可选的。console.log调用是字符串的一部分,该字符串插入到Dom中,作为代码,在oninput事件firesI尝试这两种情况时执行,尽管控制台正在确认更改显示是静态的您是否使用了更新的代码?元素似乎是动态更新的。是的,我在回答中使用了这段代码,而没有使用setAttribute的setAttributery,因为我所做的更新不再需要它了。它现在正在工作。谢谢,你知道obj为什么会失去对元素的引用吗