1 回答

TA貢獻2011條經驗 獲得超2個贊
childNodes將包括元素的所有子節點,包括文本節點。(例如,您inp.childNodes[0]實際上指的是第一個<br>.
您絕對不想在 childNodes 上使用數組索引來標識表單輸入;您的代碼將非常脆弱,并且基本上只要有人編輯 HTML 就會中斷(只需在節點之間添加一些文本就足以更改索引號。)
您可以通過僅選擇您想要的特定標簽類型的元素來稍微改進這一點:
var inputs = document.querySelectorAll('#form-content input'); // select all inputs inside #form-content
inputs[0].value="first name"
console.log(inputs[0].value)
<div>
<h1>DOM</h1>
<div id="form-content" class="content"
><br><label for="first-name">First Name</label>
<br><input type="text" id="first-name"/>
<label for="last-name"><br>Last Name</label>
<br><input type="text" id="last-name"/>
<label for="email"><br>Email</label>
<br><input type="text" id="email" />
</div>
<div id="main-content" class="content">
<p class="render">First Name : Alex</p>
<p class="render" id="lastName">Last Name: Bank</p>
<p class="render"> Email : [email protected]</p>
<p class="render"> Country : Pakistan </p>
<p class="render"> contact : +92 300 1234567</p>
</div>
</div>
...但我也不會這樣做:雖然它比使用 childNodes 更容易破壞,但它仍然取決于表單元素的順序,永遠不會改變。
我強烈建議為每個特定的表單字段使用特定的標識符(無論是使用 ID 還是數據屬性),而不是在代碼中構建對特定布局的依賴性。
添加回答
舉報