>웹 프론트엔드 >JS 튜토리얼 >JavaScript로 '더 보기/간략히 보기' 버튼 수정

JavaScript로 '더 보기/간략히 보기' 버튼 수정

Patricia Arquette
Patricia Arquette원래의
2025-01-04 02:52:42149검색

안녕하세요 개발자 여러분! ?‍??‍?
저는 CS 학생이고 프론트엔드 개발자가 되고 싶어서 자바스크립트를 배우고 있는데, 오늘은 최근에 자바스크립트를 이용하여 간단한 "더 보기 / 간략히 보기" 버튼을 만들면서 배운 개념을 공유하고 싶었습니다.
첫 번째 코드와 두 번째 코드의 차이점이 무엇인지 알 수 있나요
그리고 마녀1은 사실이에요!!

다음과 같이 텍스트 표시 여부를 전환하는 버튼을 만들려고 했습니다.
Fixing a

Fixing a

텍스트 숨겨진 텍스트 클래스가 포함된 간단한 HTML 2 단락 중 하나
이것이 우리가 토글할 버튼이고 작업을 수행할 버튼입니다

<p>lorem ipsum dolor sit amet consectetur adipisicing elit. </p>
<p>



<p>css:<br>
</p>

<pre class="brush:php;toolbar:false">.hidden-text {
  display: none;
}

필요한 변수를 모두 선언했습니다

let showButton = document.querySelector(".show-more");
let text = document.querySelector(".text");
let value = false; // Initially, the text is hidden

내 첫 번째 코드는 다음과 같습니다.

showButton.addEventListener("click", (value) => {
    value = !value;
    text.classList.toggle("hidden-text");
    showButton.textContent = value ? "show less..." : "show more..."; // Update button text
});

그러나 이것은 작동하지 않았습니다. value=!value를 사용하여 전환했는데도 값은 항상 거짓이었습니다
검색을 좀 해보니 왜 이런 일이 일어났는지 알 수 있었습니다

버튼을 클릭할 때마다 콜백 함수 내부의 로컬 값 매개변수가 다시 선언되어 외부 값이 숨겨졌습니다.

즉, 외부 값은 변경되지 않고 항상 false로 유지됩니다.
로컬 값은 콜백 내부에서 전환되지만 해당 함수가 실행되는 동안에만 존재하며 외부 값에는 영향을 미치지 않습니다.

이 문제를 해결하려면 콜백에서 값 매개변수를 제거하고 버튼 클릭 시 지속되는 외부 값을 직접 사용해야 했습니다.

let value = false; // Persistent state variable

showButton.addEventListener("click", () => { 
    value = !value; // Toggle the outer value
    text.classList.toggle("hidden-text");
    showButton.textContent = value ? "show less..." : "show more..."; // Update button text based on value
});

위 내용은 JavaScript로 '더 보기/간략히 보기' 버튼 수정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.