2017-09-09 141 views
0

下面的代碼應該允許我編輯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> 
+0

第一個顯而易見的問題:需要'

'中的引用並且應該以分號(;)結束每個javascript行 – Nick

+0

首先要解決的問題是,您的字符串中包含一個'console.log()'函數調用它打破了語法。該代碼只是在此修復後工作 - [FIDDLE DEMO HERE](https://jsfiddle.net/hdy9jqv7/1/) –

+0

只要沒有空格,除了少數例外情況外,不需要引號循環分號是可選的 – user7951676

回答

0

目前還不清楚是什麼你正在嘗試做的,請註明您的期望的結果是什麼。

此代碼確實會影響DOM,但我不確定這是否您希望您的結果看起來像。

<body><p id=test>test</p> 
 
    <script> 
 

 
     var obj=document.getElementById("test").innerHTML 
 
     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>

1

這個修改後的代碼應該讓你修改<p>元素的屬性:

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"; 

我基本上固定在代碼中引用。另外,由於某些原因,obj失去了對實際html元素的引用,所以使用document.getElement ...來代替。

+0

我已經嘗試了兩種方法,並且控制檯正在確認顯示是靜態的更改 – user7951676

+0

你使用了更新的代碼嗎?這個元素似乎爲我動態更新。 –

+0

是的,我在答案中使用了這段代碼而不是setAttribute – user7951676

相關問題