Причина, по которой вам нужно щелкнуть дважды:
element.style.display
относится только к встроенным стилям .
Изначально ваши элементы не имеют style
- атрибут. В результате element.style.display
возвращает пустую строку:
function showHide(c,t) {
var c = document.getElementById("content");
var t = document.getElementById("text");
console.log("c.style.display is:" + c.style.display);
if (c.style.display === "none") {
c.style.display = "block";
t.innerHTML = 'See Less Benefits';
} else {
t.innerHTML = 'See More Benefits';
c.style.display = "none";
}
}
<div class="content" id="content"><br>
<p><span class="benefit-stat">$2B</span> lorem</p>
<p><span class="benefit-stat">$2B</span> ipsum</p>
<p><span class="benefit-stat">$100</span> ipsum</p>
<p><span class="benefit-stat">32%</span> ipsum</p>
</div>
<p class="benefits-drop" id="text" onclick="showHide()">See More Benefits</p>
Плохое, но простое решение:
Добавьте style="display: block"
к исходному HTML:
function showHide(c,t) {
var c = document.getElementById("content");
var t = document.getElementById("text");
console.log("c.style.display is:" + c.style.display);
if (c.style.display === "none") {
c.style.display = "block";
t.innerHTML = 'See Less Benefits';
} else {
t.innerHTML = 'See More Benefits';
c.style.display = "none";
}
}
<div class="content" id="content" style="display: none"><br>
<p><span class="benefit-stat">$2B</span> lorem</p>
<p><span class="benefit-stat">$2B</span> ipsum</p>
<p><span class="benefit-stat">$100</span> ipsum</p>
<p><span class="benefit-stat">32%</span> ipsum</p>
</div>
<p class="benefits-drop" id="text" onclick="showHide()">See More Benefits</p>
Лучшее решение:
Вместо переключения style.display
между none
и block
вместо переключения универсального атрибута hidden
:
function showHide() {
const c = document.getElementById("content");
const t = document.getElementById("text");
t.textContent = c.hidden ? 'See Less Benefits' : 'See More Benefits';
c.hidden = !c.hidden;
}
<div class="content" id="content" hidden><br>
<p><span class="benefit-stat">$2B</span> lorem</p>
<p><span class="benefit-stat">$2B</span> ipsum</p>
<p><span class="benefit-stat">$100</span> ipsum</p>
<p><span class="benefit-stat">32%</span> ipsum</p>
</div>
<p class="benefits-drop" id="text" onclick="showHide()">See More Benefits</p>