使用jquery,数组类型id中的值是未定义的

values are undefined in array type ids using jquery

本文关键字:未定义 id jquery 数组 类型 使用      更新时间:2023-09-26

我在关闭色盒后更改图像的src。当img标签的ID像tabImage时,它工作正常,但当我将ID更改为tabImage[0]时,它停止工作。

工作代码如下:

<div class="whBg"><a href="javascript:openIframe('offerImage');">Select Image</a></div>
<form:hidden path="offerImageName" />
<form:hidden path="offerImageRel" />
<form:hidden path="offerImageTitle" />
<form:errors path="offerImage" cssClass="errorInst" />              
<img id="offerImages" src="" style="width: 642px; margin:0px 0 0 220px;" />
<input type="hidden" id="returnImageName" />
<input type="hidden" id="returnImageSrc" />
<input type="hidden" id="returnImageRel" />
<input type="hidden" id="returnImageTitle" />
<script>
  function openIframe(tabName)
  {
    $.colorbox({
      iframe:true, 
      href:"imageListFrame",
      innerWidth:1000, 
      innerHeight:500,
      onClosed: function() { 
        $("#"+tabName+"s").attr("src", $("#returnImageSrc").val());
        $("#"+tabName+"Name").val($("#returnImageName").val());
        $("#"+tabName+"Rel").val($("#returnImageRel").val());
        $("#"+tabName+"Title").val($("#returnImageTitle").val());
      }   
    });    
  }
</script>

当我改变inputimg的id时,它停止工作。

<div class="whBg"><a href="javascript:openIframe('toursImage',0);">Select Image</a></div>
<input type="hidden" id="toursImageName[0]" />
<input type="hidden" id="toursImageRel[0]" />
<input type="hidden" id="toursImageTitle[0]" />
<img id="toursImages[0]" name="toursImages[0]" src="" style="width: 642px; margin:0px 0 0 220px;" />
<input type="hidden" id="returnImageName" />
<input type="hidden" id="returnImageSrc" />
<input type="hidden" id="returnImageRel" />
<input type="hidden" id="returnImageTitle" />
<script>
  function openIframe(tabName,id)
  {
    $.colorbox({
      iframe:true, 
      href:"imageListFrame",
      innerWidth:1000, 
      innerHeight:500,
      onClosed: function() { 
        $("#"+tabName+"s["+id+"]").attr("src", $("#returnImageSrc").val());
        alert($("#"+tabName+"s["+id+"]").attr("src"));
        $("#"+tabName+"Name["+id+"]").val($("#returnImageName").val());
        $("#"+tabName+"Rel["+id+"]").val($("#returnImageRel").val());
        $("#"+tabName+"Title["+id+"]").val($("#returnImageTitle").val());
      }   
    });    
  }
</script> 

我已经仔细检查了returnImageName, returnImageSrc等是否得到正确的值。我试图使用jquery访问#toursImages[0]的值,但我得到undefined在警报。

必须用''

转义[] -括号
$("#"+tabName+"Name''["+id+"'']")

From jQuery Docu: LINK

使用任何元字符(如! " # $ %和 ;'()*+,./:;& lt; => ?@[]^ '{|}~)作为名称的文字部分,它必须用两个反斜杠转义:''.

我认为你不能把[]放在id属性中。

ID和NAME标记必须以字母([a- za -z])开头,后面可以跟着任意数量的字母、数字([0-9])、连字符("-")、下划线("_")、冒号(":")和句点("。")。

查看答案:https://stackoverflow.com/a/79022/863110

尝试替换为下划线(_),例如:

<input type="hidden" id="toursImageName_0" />

您应该将toursImageName[0]更改为toursImageName0