테스트 사이트 - 개발 중인 베타 버전입니다

변수에 태그 채택완료

미니미니츄 3년 전 조회 1,579

안녕하세요!

혼자 찾아보다가 해결이 안되서 ..ㅠ

여기에 글 올리게 되었습니다!

 

아래 코드는 

const content = "안녕하세요 \n 오늘하루는 어떤가요? \n 맛점하세요 \n\n <span>오후도 화이팅</span>!!";

여기에 담긴 텍스트가 하나씩 타이핑 되는데요.

 

<script>

const content = "안녕하세요 \n 오늘하루는 어떤가요? \n 맛점하세요 \n\n <span>오후도 화이팅</span>!!";

const text = document.querySelector(".text");

 

let i = 0;

 

function typing(){

if (i < content.length) {

let txt = content.charAt(i);

text.innerHTML += txt=== "\n" ? "<br/>": txt;

 

i++;

}

 

}

setInterval(typing, 90)

</script>

 

여기 안에 오후도 화이팅이라는 곳만 텍스트를 다르게 적용하기 위해 <span></span> 태그를 넣었더니..

저 span 태그도 문자열로 인식되서 그대로 노출되더라구요 ㅠㅠ

function typing(){ 

}

 

여기안에 innerHTML로 넣으려니 타이핑이 안먹히구요 ㅠㅠ

content 변수안에 태그도 적용되면서 텍스트도 노출할 수 있는 방법이 있을까요?

 

고수님들의 답변 부탁드립니다 :) 꾸벅

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

문제가 <span>오후도 화이팅</span> 이부분을

content.charAt(i) 하나씩 읽어와서 문제가 되는 겁니다.

하나씩 읽어올 경우 < 이부분이 &lt; 인식을 하기 때문에 태그가 그대로 노출이 되는 겁니다.

 

방법은 두가지 입니다.

<span>오후도 화이팅</span> 이부분을 한번에 읽어 오실지..

아니면 미리 <span></span>태그를 정의하여 하나식 하실지는 미니님께서 판단하셔야합니다.

 

아래코드 간략하게 짜보았습니다.

</p>

<p> <div class="text"></div>

  <script></p>

<p>const content = "안녕하세요 \n 오늘하루는 어떤가요? \n 맛점하세요 \n\n";

const content_sp = "<span>오후도 화이팅</span>!!";</p>

<p>const text = document.querySelector(".text");</p>

<p> </p>

<p>let i = 0;

let end_chk = false;

 </p>

<p>function typing(){</p>

<p>if (i < content.length) {</p>

<p>let txt = content.charAt(i);</p>

<p>text.innerHTML += txt=== "\n" ? "
": txt;</p>

<p>i++;</p>

<p>}

else

{

    if(!end_chk)

    {

        text.innerHTML += content_sp;

        end_chk =true;

    }

    //return;

    //clearInterval(this);

}</p>

<p> </p>

<p>}</p>

<p>setInterval(typing, 90)</p>

<p></script></p>

<p>

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

미니미니츄
3년 전
와..멋지십니당!!
content.charAt(i) 이거 때문에 태그가 읽힌다니..몰랐던걸 알게되서 놀랍습니다!
정말 감사합니다.!!

댓글을 작성하려면 로그인이 필요합니다.

const content = "안녕하세요 <br/> 오늘하루는 어떤가요? <br /> 맛점하세요 <br/><br/><span>오후도 화이팅</span>!!";
let text = document.querySelector(".text");

...
 
function typing(){
     text.innerHTML = txt;

     ...

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

스피드S
3년 전

저 스크립트만으로는 불가능합니다... 

innerHTML, innerTEXT 두가지뿐입니다. 

아래 형식으로 innerHTML로 해결해보시면 되겠습니다.

</p>

<p>content[] = "안";</p>

<p>content[] = "녕";</p>

<p>content[] = "하";</p>

<p>content[] = "<span>호호호</span>";</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

미니미니츄
3년 전
답변 감사합니다..ㅠ
제가못하는건지..알려주신걸로는 타이핑이 안되네용..

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인