我試圖用一個類和一個值來比較幾個div,只有當我用id做的時候才有效,不知道如何用類的名字來做
這沒有用
這樣做是行不通的
。<body>
<div id="horarios"/span>>
<div class="demo"/span> value="5。 40:55">Le valor</div>/span>
<div class="demo" value="5。 40:55">Le valor1</div>/span>
<div class="demo" value="5。 40:55">Le valor2</div>/span>
</div>/span>
<script>
var regex = new RegExp(':', 'g') 。
timeStr1 = '5:50:55'。
timeStr2 = document.getElementById("horarios").classList。 contains('demo').getAttribute('value') 。
if(parseInt(timeStr1. replace(regex, ''), 10) < parseInt( timeStr2. replace(regex, ''), 10) {
console.log('timeStr1 is smaller then timeStr2')。
} else {
console.log('timeStr2 is smaller then timeStr1')。
}
</script>>
</body>/span>
這樣做是可行的
<body>
<div id="demo"/span> value="5。 40:55">Le valor</div>/span>
<script>
var regex = new RegExp(':', 'g') 。
timeStr1 = '5:50:55'。
timeStr2 = document.getElementById('demo')。 getAttribute('value') 。
if(parseInt(timeStr1. replace(regex, ''), 10) < parseInt( timeStr2. replace(regex, ''/span>), 10)){
console.log('timeStr1 is smaller then timeStr2')。
} else {
console.log('timeStr2 is smaller then timeStr1')。
}
</script>>
</body>/span>
謝謝你
uj5u.com熱心網友回復:
好吧,這很正常,因為classList會回傳一個特定元素的類別串列,而不是它的子元素。
你可以使用querySelectorAll來達到這個目的:
var demos = document. querySelectorAll("div.demo") 。
這將是一個元素的串列,以后你可以通過類和任何你需要的東西來檢查。
uj5u.com熱心網友回復:
如果我誤解了問題,請告訴我,但要將代碼應用于任何具有demo類的元素,這應該是可行的:
<body>
<div id="horarios"/span>>
<div class="demo" value="5。 50:54">Le valor</div>/span>
<div class="demo" value="5。 50:56">Le valor1</div>/span>
<div class="demo" value="5。 50:55">Le valor2</div>/span>
</div>/span>
<script>
const demos = document.querySelectorAll(" .demo")。
demos.forEach((demo) => {
let regex = new RegExp(":", "g") 。
let timeStr1 = "5:50:55"/span>;
let timeStr2 = demo.getAttribute("value") 。
if (
parseInt(timeStr1.replace(regex, ""/span>), 10) <
parseInt(timeStr2.replace(regex, ""),10)
) {
console.log("timeStr1 is smaller then timeStr2"/span>)。
} else {
console.log("timeStr2 is smaller then timeStr1") 。
}
});
</script>>
</body>/span>
uj5u.com熱心網友回復:
Hi, 我解決了你的問題。
首先,你不能選擇元素并在其子元素上呼叫classlist.contains()方法,它必須是在元素本身上,所以你可以添加querySelectorAll()。
和選擇div的類。
這是你編輯的代碼
。var regex = new RegExp(" 。 ", "g")。)
timeStr1 = "5:50:55"。
divsDemo = document.querySelectorAll(".demo") 。
divsDemo.forEach((div) => {
let timeStr2 = div.getAttribute("value"/span>)。
if (
parseInt(timeStr1.replace(regex, ""/span>), 10) <
parseInt(timeStr2.replace(regex, ""),10)
) {
console.log("timeStr1 is smaller then timeStr2") 。
} else {
console.log("timeStr2 is smaller then timeStr1") 。
}
});
<div id="horarios">
<div class="demo"/span> value="5。 40:55">Le valor</div>/span>
<div class="demo" value="5。 40:55">Le valor1</div>/span>
<div class="demo" value="5。 40:55">Le valor2</div>/span>
</div>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
我添加了forEach方法來檢查所有的div,而不僅僅是第一個div
uj5u.com熱心網友回復:
你必須在元素中回圈,并逐一比較:
。const regex = new RegExp(' 。 ', 'g')。)
timeStr1Unformatted = '5:50:55',
els = document.getElementById("horarios").children。
Array.from(els).forEach(>el=>)
{
const timeStr1 = parseInt(timeStr1Unformatted. replace(regex, ''), 10)。)
timeStr2 = parseInt(el.getAttribute('value') 。 replace(regex, ''/span>), 10)
if (timeStr1 < timeStr2) {
console.log('timeStr1 is smaller then timeStr2')。
} else {
console.log('timeStr2 is smaller then timeStr1')。
}
})
<div id="horarios">
<div class="demo"/span> value="5。 40:55">Le valor</div>/span>
<div class="demo" value="5。 40:55">Le valor1</div>/span>
<div class="demo" value="5。 40:55">Le valor2</div>/span>
</div>
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
你應該可以用document.getElementsByClassName代替。你的問題是,contains函式回傳一個布林值(詳情請參見檔案)。這意味著getAttribute不能作業,因為它期望的是一個Node而不是一個布林值。
這樣做應該可以:
timeStr2 = document.getElementsByClassName("demo");
注意,這將是一個元素陣列,所以如果你只想要第一個元素的值,就用這個來代替
。timeStr2 = document. getElementsByClassName("demo")[0].getAttribute("value");
看到評論后更新。你應該使用一個回圈來逐一檢查每個值:
document.getElementsByClassName("demo"/span>)。 forEach((currentElement) => {
const timeString = currentElement.getAttribute("value"/span>)。
if (parseInt(timeString . replace(regex, ""), 10) < parseInt(timeString . replace(regex, "), 10) {
console.log(currentElement.innerText " is smaller than timeStr2") 。
} else {
console.log("timeStr2 is smaller than " currentElement.innerText)。
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/320431.html
標籤:
