新手一問
語句:
<div class="counter_1_item" index="1">
如何可以在html把Class後的index="1" 改成index="2"
透過 setAttribute
方法,可參考 MDN Element.setAttribute()
document.querySelector(".counter_1_item").setAttribute("index", 2)
為何我在Console輸入 它顯示
Uncaught TypeError: Cannot read property 'setAttribute' of null
at <anonymous>:1:64
大神 幫幫忙 感恩
這代表 setAttribut
前面的東西並沒有取到網頁元素,而是一個空值
請檢查 document.querySelector("XXXXXX")
是不是正確
你可以在網頁中先透過 document.querySelector("body")
驗證你寫的語法是可以正確取得網頁元素的(這裡會是 body
)
確認可以拿到元素後再替換成你自己的 class
名稱
明白了
但發現實際比想像更複習
我直接從簡把它貼出來
大神 有方法嗎
(也是一樣把全部的<div class="counter_1_item" index="1">
內的index改成"2")
麻煩了 感恩
<body>
<form name="form1" method="post" action="./test.aspx?uid=733746c74e89&type=1" id="form1" class="layui-form">
<div class="report1_banxin">
<div class="report1_main">
<ul class="counter_1_main">
<li class="counter_li_question_item"question-uid="a1509a262" type="1">
<div class="counter_1_item" index="1">
<div class="counter_1_son1" data-val="0">
</div>
</ul>
</li>
</ul>
</div>
</div>
</form>
</body>
如果你的需求是需要將多個有相同 class 名稱的網頁元素都要修改它的 index
的值,那麼在選取網頁元素的語法上,你需要透過document.querySelectorAll
方法(語法說明請參考 MDN document.querySelectorAll)。
這時候你會拿到一個類陣列(array-like) 的 NodeList,然後你可以透過使用 forEach
方法依序將每一個網頁元素的 index
的值做修改
參考程式碼:
<!-- html -->
<div class="counter_1_item" index="2"></div>
<div class="counter_1_item" index="2"></div>
<div class="counter_1_item" index="2"></div>
<div class="counter_1_item" index="2"></div>
<div class="counter_1_item" index="2"></div>
<div class="counter_1_item" index="2"></div>
// js
const elements = document.querySelectorAll(".counter_1_item");
elements.forEach(element => {
element.setAttribute("index", 2)
});
document.querySelectorAll(".counter_1_item");
是可以拿到Nodelist,但為何我使用了forEach
的方法
index的值也不能由1 改成2?
謝謝大神 辛苦了