2014-11-03 1 views
-1

임은 구글과 같은 작은 스크립트 파일을 추가 작업려고 정의하지만 난 같은 오류가 발생되지 않습니다기능은 자바 스크립트

ReferenceError: addFile is not defined 

사용하는 스크립트 메신저입니다 :

자바 스크립트

function addElement(parentId, elementTag, elementId, html) { 
    // Adds an element to the document 
    var p = document.getElementById(parentId); 
    var newElement = document.createElement(elementTag); 
    newElement.setAttribute('id', elementId); 
    newElement.innerHTML = html; 
    p.appendChild(newElement); 
} 

function removeElement(elementId) { 
    // Removes an element from the document 
    var element = document.getElementById(elementId); 
    element.parentNode.removeChild(element); 
} 


var fileId = 0; // used by the addFile() function to keep track of IDs 
function addFile() { 
    fileId++; // increment fileId to get a unique ID for the new element 
    var html = '<input type="file" name="uploaded_files[]" />' + 
       '<a href="" onclick="javascript:removeElement('file-' + fileId + ''); return false;">Remove</a>'; 
    addElement('files', 'p', 'file-' + fileId, html); 
} 

HTML :

<form enctype="multipart/form-data" action="" method="post"> 
    <p>Upload file(s)</p> 
    <div id="files"> 
     <p><input type="file" name="uploaded_file[]" /></p> 
    </div> 
    <p><input type="button" value="Add File" onclick="addFile();" /></p> 
</form> 

jsfiddle 예 :

http://jsfiddle.net/neocastelli/qy7xfheb/

addFile가 정의되지 않은 이유를 알 수있는 방법이 있나요?

+1

당신은 매우 놀라운 일이 아니다 구문 오류, 당신은 자바 스크립트에서 문자열을 연결하여 이벤트 핸들러와 HTML을 구축 고려했다가,이 그렇게 쉽게 그렇게하지 때 발생 : 당신이해야 할 모범 사례를 따르십시오. 브라우저의 콘솔은 해당 오류를 정확히 가리 킵니다. –

답변

1

실수로 문자열을 이스케이프 처리했습니다.

var html = '<input type="file" name="uploaded_files[]" /> ' + 
      '<a href="" onclick="javascript:removeElement('file-' + fileId + ''); return false;">Remove</a>'; 

가되어야한다 :
var html = '<input type="file" name="uploaded_files[]" /> ' + 
      '<a href="" onclick="javascript:removeElement("file-' + fileId + '"); return false;">Remove</a>'; 

는 또한 함수가 글로벌되지 않습니다.

window.addFile = function() { 

See the updated Fiddle

+1

충분하지 않습니다. DOM이 준비되었거나로드 된 후에는이 자바 스크립트를 head 태그에 넣어야합니다. –

+0

안녕하세요 @ Andreas, 힌트 주셔서 감사합니다!, 지금은 그것을보고 그것을 제거하지 말아라, 선택된 요소를 제거하지 마라. 그리고 그것은 오류를 돌려 준다. Uncaught SyntaxError : Unexpected token} – Dario

관련 문제