2010-05-11 9 views
0

여기에 거래가 있습니다. 나는 그것의 헤더에 내부 JS 파일에 링크 index.php 있어요. index.php에는 다음과 같은 다른 .php 파일이 포함되어 있습니다. + 파일 추가. addFile()은 외부 JS 파일에 정의 된 Javascript 함수입니다.자바 스크립트 함수 호출 PHP 파일 포함

이렇게하면 아무런 일도 일어나지 않습니다. 포함 된 PHP는 JS 함수를 "보지 못합니다". 포함 된 PHP에서 JS를 캡슐화하면 모든 작업이 가능합니다. 하지만 나는 그런 식으로하고 싶지 않습니다.

아이디어가 있으십니까?

는 편집 :

여기 소스

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Archie</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
     <link rel="stylesheet" href="/screen.css" type="text/css" media="screen"/> 
     <script src="/lib/js/archie.js" type="text/javascript"></script> 
    </head> 
    <body> 
     ... 
     ... 
     //included php starts here 
     <form action="/lib/course.php" method="post"> 
      <fieldset> 
        <div id="addFileLocation"></div> 
       <a href="#" onClick="addFile()">+ add file</a>   
       <input type="hidden" id="addFileCount" value="0"/> 
      </fieldset> 
     </form> 
     //ends here 
     ... 
     ... 
    </body> 
    </html> 

와 JS의 :

<script type="text/javascript"> 
    //Dynamically add form fields 

    //add file browser 
    function addFile() { 
     var location = document.getElementById('addFileLocation'); 
     var num = document.getElementById('addFileCount'); 
     var newnum = (document.getElementById('addFileCount').value -1)+ 2; 
     num.value = newnum; 
     var newname = 'addFile_'+newnum; 
     var newelement = document.createElement('input'); 
     newelement.setAttribute('name',newname); 
     newelement.setAttribute('type','file'); 
     location.appendChild(newelement); 
    } 

</script> 
+0

어, 우리는 내가 믿는 출처를보아야 할 것입니다. – Robus

답변

0

알아보기 바보 같이, 나는 외부 js 파일에서 <script></script> 쌍을 제거하는 것을 잊었다. 도움 주셔서 감사합니다 리치!

1

그것은 파일이 포인트 기능에서 브라우저에 "로드"되지 않았 음을 가능 호출됩니다. 그래서 jQuery의 $ (document) .ready() 함수를 사용한다. jQuery의 "document ready"(단순히 js 코드를 실행하기 위해 브라우저에서 전체 문서를 다운로드 할 때까지 대기)와 비슷한 함수에서 addFile에 대한 호출을 래핑하면 모든 함수가 있어야합니다. 모든 것이로드 될 때까지 기다렸다가 브라우저의 주소 표시 줄에서 수동으로 해당 함수를 호출하면 어떻게됩니까?

1

코드 샘플을 살펴본 후 href = "#"이 (가) onClick 처리기의 회로를 누그러 뜨릴 수 있습니다. 앵커를 다음과 같이 변경하면 어떻게됩니까?

  <a href="javascript:addFile();">+ add file</a> 
+0

그 작품, 고마워. 왜 그런 일이 일어 났는지 말해 주실 수 있습니까?, href 링크를 먼저 만들면 onClick은 실행되지 않습니다. –

+0

나쁜 소식. 그것은 여전히 ​​작동하지 않습니다. –

+0

나는 보통 함수의 다른 지점에 경고 형식으로 디버그 문을 넣어서 함수를 치는 경우와 특정 지점에서 벗어나는 경우 알려줍니다. 따라서 알림 추가 ("기능 시작"); func의 첫 번째 행으로, appendChild를 호출하기 전에 newelement의 일부 속성에 상태를 알리고 func이 오류 등으로 자동 종료하지 않은 것일 수도 있습니다. – Rich

관련 문제