2014-05-14 4 views
1

JS 스크립트에서 정의한 변수를 옥 (jade) 파일에 사용하고 싶습니다. 그게 가능하니?Jade에서 JS 스크립트 변수 사용

script. 
    var J1 = 0; 
    var socket = io.connect('http://localhost:3000'); 
    socket.on('positionJ1', function(positionJ1) { 
    J1 = positionJ1; 
    }) 

p Le joueur 1 est en case #{J1} 

편집이 :

충분히 명확하게하기 위해, 여기에 내가 할 노력하고있어 무엇 는 DOM과 방법을 시도하기 위해, 내가 그 일을했지만, 나는 어떤 경고를받지 않습니다 . innerHTML 메서드가 작동하지 않습니다. document.body.innerHTML = "Something"; 잘 작동한다.

p#posJ1 
    script. 
    var socket = io.connect('http://localhost:3000'); 
    socket.on('positionJ1', function(positionJ1) { 
     var J1 = document.getElementById("posJ1"); 
     J1.innerHTML = "Le joueur 1 est en case " + positionJ1; 
     document.body.appendChild(J1); 
    }) 

답변

0

이것은 문자 적으로 불가능하다 :

script. 
    var J = document.getElementById("posJ1").innerHTML; 
    alert(J); 

p#posJ1 Plop 

수정 : 내 페이지 번호의 posJ1이

솔루션 스크립트 이상일 때 작동합니다. Jade는 클라이언트에 제공되기 전에 정적 HTML로 렌더링됩니다. 입력 한 변수는 렌더링시에만 구문 분석됩니다.

그런 런타임 DOM 조작을 수행하려면 javascript를 사용해야 할 것입니다.

 
    script. 
    var J1 = 0; 
    var socket = io.connect('http://localhost:3000'); 
    socket.on('positionJ1', function(positionJ1) { 
    J1 = positionJ1; 
    document.getElementById('position').innerHTML= J1; 
    }) 

    p Le joueur 1 est en case 
     span#position 

+0

나는 당신의 방법을 시도했지만 옥은 ID를 인식하지 못하는 것 같습니다. 나는 약간의 테스트를했는데, 내 질문에 합쳐졌다.) – Drarewyn

+0

@Drarewyn HTML이 파싱 된 방식 (위에서 아래로)과 그 안에있는 자바 스크립트가 발견되면 실행되기 때문에 모든 요소는 dom의 일부가되어야한다. 자바 스크립트가 작동합니다. 'p'가 DOM의 일부가되기 전에 당신의'J ='할당과'alert()'가 즉시 실행됩니다. 하지만 실제로 메시지를 수신 할 때까지 실행되지 않기 때문에 socket 메소드는 제대로 작동해야합니다. – laggingreflex

+0

나는 내가 원하는 것을 할 수 있었고, 당신의 대답은 매우 도움이되었으므로, 감사합니다. 내 질문에 내 솔루션에 참여;) – Drarewyn

관련 문제