函数未定义javascript

时间:2014-11-03 15:10:35

标签: javascript

我试图让像google这样的小脚本添加更多文件,但我收到的错误如下:

ReferenceError: addFile is not defined

我正在使用的脚本是:

的Javascript

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 个答案:

答案 0 :(得分: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