2010-03-18 4 views
1

사용자가 텍스트 상자에 이름을 입력 한 다음 버튼을 클릭 할 때 JavaScript를 사용하여 선택 윤곽을 시작하려고합니다. 그것을하는 방법에 관해서는 아이디어가 있지만, 스크립트는 결코 완벽하게 작동하지 않습니다. 어떤 도움을 주셔서 감사합니다! 여기 사용자 입력을 기반으로 JavaScript로 선택 윤곽을 시작하는 방법은 무엇입니까?

는 지금까지이 작업은 다음과 같습니다

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<script type="text/javascript"> 
    function StartMarquee() { 
     var text = document.getElementById(namebox); 
     if (text != null) { 
      document.write("<marquee behavior='scroll' direction='right'>Hello " + text + "!</marquee>"); 
     } 
     else { 
      alert("Enter your name first!!!"); 
     } 
    } 
</script> 
</head> 
<body> 
<table style="margin:0px auto 0px auto;"> 
<tr><td>Enter your name!</td> 
<td><input type="text" id="namebox"/></td> 
<td><input type="button" value="Enter" onclick="StartMarquee()"/></td></tr> 
</table> 
</body> 
</html> 
+0

"전혀 작동하지 않는다"는 것은 무엇을 의미합니까? –

+0

완전히 작동하지 않는다는 것은 "사용자 이름을 먼저 입력하십시오!"라는 경고 메시지가 울립니다. 또는 "Hello null!"이라고 말한 윤곽을 볼 수 있습니다. –

답변

4

JavaScript에 약간의 문제가 있습니다.

  1. 정의되지 않은 변수 nameboxgetElementById으로 전달합니다. 이를 따옴표로 묶어야합니다 ('namebox').
  2. 의 값을 null이 아닌 빈 문자열에 대해 확인해야합니다.
  3. 작성중인 요소에서 입력 값 (text이 아닌 text.value)을 사용해야합니다. 여기

는 코드가 이러한 수정과 같을 것이다 것입니다 :

function StartMarquee() { 
    var text = document.getElementById('namebox'); 
    if (text.value !== '') { 
    document.write("<marquee behavior='scroll' direction='right'>Hello " + text.value + "!</marquee>"); 
    } 
    else { 
    alert("Enter your name first!!!"); 
    } 
} 

일부 다른 일반적인 제안 :

  1. document.write을 사용하지 마십시오. 대신 DOM 메소드를 사용하여 새 요소를 만들고이를 DOM에 삽입하십시오.
  2. 눈에 잘 띄지 않는 JavaScript를 사용하십시오. 인라인 이벤트 처리기를 사용하는 대신 문서를로드 한 후 동작을 첨부하십시오.
  3. 유형 강제 변환을 피하고 자신이 생각하는 결과를 얻는 데 필요한 조건은 ===!==을 사용하십시오.
  4. 결코 사용하지 않으려면 marquee을 사용하십시오.
+0

+1, 절대로 차용을 사용하십시오. – TiansHUo

1
var text = document.getElementById(namebox).value; 
+0

P. 눈에 잘 띄지 않는 자바 스크립트에 대해 읽어보십시오. –

1

당신은 아마 요소를 만들기 위해이 항아리 사용 document.createElement('marquee')에 대한 document.write를 사용하고 본체에 추가하고 싶지 않아 페이지. 다시 가져온 요소의 방향과 같은 속성을 설정할 수 있으며 선택 윤곽에 넣을 텍스트에 innerHTML을 설정합니다.

(P.S. Marquee? Really?)

+0

나중에 심각하게! 큰 천막? –

+0

예. 선택 윤곽은 나의 마음에 드는 사람이 아니다. 그러나 나는 나의 친구 중의 1 명과 경쟁하기 위해 이것을한다. –

+0

@APShredder : 경쟁. 좋은. –

관련 문제