如何修复此错误,说明这不是一个函数

时间:2012-05-15 00:38:45

标签: javascript jquery dom

我在下面的代码中收到$("<div/>").text(value).html is not a function is not a function错误:

function htmlEncode(value) { 
    return $('<div/>').text(value).html(); 
}

function startImageUpload(imageuploadform, imagefilename){

    $('.imagef1_cancel').eq(window.lastUploadImageIndex).html(
        '<div>' + 
        htmlEncode(imagefilename) + 
        '<button type="button" class="imageCancel" cancel_image_file_name="' + 
        imagefilename + 
        '">CANCEL</button><br/><hr/></div>'
    );

    $('.imagef1_cancel').eq(window.lastUploadImageIndex)
        .find(".imageCancel")
        .on("click", function(event) {
            var cancel_image_file_name = $(this).attr('cancel_image_file_name');
            console.log(cancel_image_file_name) 
            jQuery.ajax("cancelimage.php?imagefilename=" + cancel_image_file_name)
            return stopImageUpload(2, cancel_image_file_name);
    });       
    return true;
}

但是我没有得到iis,它与下面的代码非常相似。

function htmlEncode(value) { 
    return $('<div/>').text(value).html(); 
}

function stopImageUpload(success, imagefilename) {
    imagecounter++;
    $('.listImage').eq(window.lastUploadImageIndex).append(
        '<div>' + 
        htmlEncode(imagefilename) +
        '<button type="button" class="deletefileimage" image_file_name="' +
        imagefilename + 
        '">Remove</button><br/><hr/></div>'
    ); 

    var _imagecounter = imagecounter;

    $('.listImage').eq(window.lastUploadImageIndex)
        .find(".deletefileimage")
        .on("click", function(event) {

            var image_file_name = $(this).attr('image_file_name');

            jQuery.ajax("deleteimage.php?imagefilename=" + image_file_name)
                .done(function(data) {
                    $(".imagemsg" + _imagecounter).html(data);
                }
            );
            $(this).parent().remove();
        }
    );    
    return true;   
}

为什么会这样,以及如何修复错误?

1 个答案:

答案 0 :(得分:1)

我猜测,从那个错误中,你在某个时候将jQuery对象传入你的方法htmlEncode()。

当你使用jquery的文本方法时,它需要是文本或可以解释为文本的东西。 (例如,输入一串HTML并将其解释为普通字符串)

看看这个jsFiddle

或者只是把它放到你的控制台:

$('<div/>').text($('<div/>')).html()

我认为您的错误实际上来自您调用“startImageUpload”的位置以及您传递给它的内容。我必须看到你的其余代码才能确定。