在jQuery中使用变量时出现控制台错误

在jQuery中使用变量时出现控制台错误,jquery,replace,onclick,append,undefined,Jquery,Replace,Onclick,Append,Undefined,我创建了一个按钮,用于选择多个图像。多个图像按钮,并在中输出值。imagefieldmulti <div class="imagefieldwrapper pt-3"> <input type="text" size="36" name="lbu_multiple_gallery_images" class="imagefield imagefieldmulti" placeho

我创建了一个按钮,用于选择多个图像
。多个图像按钮
,并在
中输出值。imagefieldmulti

<div class="imagefieldwrapper pt-3">
<input type="text" size="36" name="lbu_multiple_gallery_images" class="imagefield imagefieldmulti" placeholder="Images URL" value="" /> 
<a class="multiple-image-button"><div class="row m-0 text-center align-items-center image-button-container"><div class="col h1"><i class="far fa-images"></i><br><h6>Add Images</h6></div></div></a>
<a id="lbu_multiple_gallery_reset" class="btn btn-warning multiple-image-reset" role="button" style="display:none;">Reset</a>
<div class="imageListId row m-0 klara-wrapper-inputs-holder multiple-images-wrapper" data-img-classes="listitemClass" data-img-width="100"></div>
</div>
对于所选的每个图像,我用一个类名为
.imagewrapper
div对其进行包装。
然后在每个
.imagewrapper
中,我添加另一个具有类名
.removeit
的div,如下所示:

var settingsOutput = $(button).closest(".imagefieldwrapper");
settingsOutput.find(".listitemClass" ).wrap( "<div class='imagewrapper col-lg' style='padding: 0px; min-width:33.3333%;'></div>" );
settingsOutput.find('.imagewrapper').append( "<div class='removeit'>X</div>" );
现在这工作正常,但我总是收到一个错误
无法读取未定义的属性“replace”

只有在表单中有多个
.imagefieldwrapper
div时才会发生这种情况。我不知道如何摆脱这个错误

无法读取未定义的属性“replace”

表示紧靠
.replace()
左侧的代码是
未定义的
,在这种情况下,它似乎是这一行:

currentimgsrc.val(currentimgsrc.val().replace(imgsrc + ',', ""));
因此
currentimgsrc.val()
返回
未定义的
。当
currentimgsrc
(通过jquery
定义。find
)是空的jquery集合时会发生这种情况

您可以检查
currentimgsrc.val()
是否未定义,但检查
.val()
左侧的代码是否也有效同样容易/快速,在本例中,它是一个jquery对象,因此您可以检查前面的
.find()
是否实际找到了元素

if (currentimgsrc.length > 0)  {
    currentimgsrc.val(currentimgsrc.val().replace(imgsrc + ',', ""));
} 

jquery通常在处理空集合方面做得很好,但您仍然需要处理任何返回值(例如
.val()

创建演示代码可能有助于了解问题所在。请单击编辑,然后单击
[]
代码段编辑器,如果我删除此部分
$,请提供@mplungjan(此).closest('.imagewrapper').remove()它不显示错误,但仍然需要此部分
$(this).closest('.imagewrapper').remove()
当元素明显不存在时(so.val()),在尝试读取
.val()
之前,应检查
currentimgsrc.length
给出了未定义的
,然后您得到的错误清楚地解释了的无法读取属性的问题undefined@freedomn-我正在检查
currentimgsrc.length
已解决错误,请将您的评论作为答案发送,以便我可以标记为已解决。非常感谢我尝试
if(currentimgsrc.length){
如果(currentimgsrc.length>0){
都可以正常工作。谢谢
currentimgsrc.val(currentimgsrc.val().replace(imgsrc + ',', ""));
if (currentimgsrc.length > 0)  {
    currentimgsrc.val(currentimgsrc.val().replace(imgsrc + ',', ""));
}