Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery attr value返回undefined,如果值是一个大数字,则返回0_Jquery_Attr - Fatal编程技术网

jquery attr value返回undefined,如果值是一个大数字,则返回0

jquery attr value返回undefined,如果值是一个大数字,则返回0,jquery,attr,Jquery,Attr,首先,如果有人问我这样的问题,我很抱歉,因为我已经搜索了很多小时。请容忍我的问题。让我详细说明一下。我动态地将选项添加到具有“value”属性的select元素中,例如简单的10位电话号码(如7465768574)和文本(如“Name(PhoneNumber)”,当用户选择时,会将其添加到无序列表中,以显示用户选择的选项。要删除该列表项,我提供了一个图像,单击该图像首先检查select元素中是否有相应的选项,然后从无序列表中删除相同的列表项,并从select元素中删除相应的选项。现在,为了实现这

首先,如果有人问我这样的问题,我很抱歉,因为我已经搜索了很多小时。请容忍我的问题。让我详细说明一下。我动态地将选项添加到具有“value”属性的select元素中,例如简单的10位电话号码(如7465768574)和文本(如“Name(PhoneNumber)”,当用户选择时,会将其添加到无序列表中,以显示用户选择的选项。要删除该列表项,我提供了一个图像,单击该图像首先检查select元素中是否有相应的选项,然后从无序列表中删除相同的列表项,并从select元素中删除相应的选项。现在,为了实现这一点,我正在检查'value'属性。问题是,若value属性是一个像电话号码一样大的数字,我的逻辑就失败了,因为jQuery不能正确地提取那个值。如果它是一个非常大的数字,它会返回0,如果它的值在600000000到70000000之间(值中没有逗号),它会返回一些随机数。我不知道是什么问题。这与价值类型或其他有关吗

<select multiple="multiple" id="select1">  
     <option class="selectedoptions" value="8234567890">Joker(8234567890)</option>  
     <option class="selectedoptions" value="2">Batman(2)</option>  
     <option class="selectedoptions" value="3">Superman(3)</option>  
     <option class="selectedoptions" value="4">Spiderman(4)</option>
     <option class="selectedoptions" value="5">Ironman(5)</option> 
     <option class="selectedoptions" value="6">Thor(6)</option> 
     <option class="selectedoptions" value="7">Loki(7)</option>
</select>  
当我用FireBug调试这段代码时,我可以看到,对于较大的数字,“check”是0,对于小于800000000的范围,它返回的随机数是0。对于较小的数字,它可以完美地工作

另外,如果我尝试.val()而不是.attr('value'),firebug会显示错误

TypeError: (c.value || "").replace is not a function
提前谢谢各位

编辑1:好的。我动态添加列表项的jQuery代码似乎在列表项中引入了随机数作为值。但问题仍然是一样的。。我可以看到我的代码(通过firebug)在创建列表项时添加了适当的值,但生成的列表项没有反映它

编辑2:回应ronalchn先生。我很抱歉。需要一个背景。我所拥有的一切如下。2选择元素“select1”和“select2”以及无序列表“selectedlist”。用户可以从“选择1”中选择选项,并将其移动到“选择2”“select2”选项将/应反映为“selectedlist”的列表项。我有一个函数removeSelected绑定到列表项中的图像

<li class="selectedlistItems" value="8123456789">
Joker(8123456789)
<a class="search-choice-close" href="#"> </a>
</li>
是“选择2选项”值。 如果匹配的话

$(this).remove().appendTo('#select1');
删除“select2选项”并将其附加到“select1”中 何处为

删除列表项,以便无序列表始终反映“select2”元素

我想这个背景足够好,可以理解我想做什么。我是jquery的新手&通常我会发布问题,我只是找到答案,这是我有史以来的第一个问题。我已经对如此迅速的反应表示感谢

编辑3:检查此JSFIDLE以了解情况

attr()
肯定适用于大数字,因为它只返回一个字符串

我在JSFIDLE上尝试了你的代码。当然,它缺少一些细节,所以我只是创造性地添加了它。然后我修复了你的一些代码,这些代码似乎不正确。不管怎样,它现在起作用了

更改包括以下行:

var check = $(this).attr('value'); // instead of looking for the parent
...
// parent.remove(); // this line is removing what is already removed

您两次尝试删除某些内容,这也导致页面爆炸,因此我将其注释掉。

这是因为,当您将其分配给
  • 元素的
    'value'
    属性时,该
    'value'
    属于
    'number'
    类型。这就是为什么它会导致溢出,并返回一个垃圾值

    为什么不使用自定义属性,我的意思是用它代替
    'value'
    使用其他自定义属性。例如说“toonId”

    $('#list').append($("<li></li>").html(Joker(8123456789)'<a class=search-choice-close href=#></a>').attr('toonId', "8234567890"));
    
    $(“#list”).append($(“
  • ”).html(Joker(8123456789)”).attr('toonId',“8234567890”);
    渲染时,其外观如下所示:

    <li class="selectedlistItems" toonId="8234567890">Joker(8123456789)<a class="search-choice-close" href="#"> </a></li>
    
    小丑(8123456789)
  • 这将为
  • 项添加一个新属性,您以后可以在任何需要的地方访问
    'toonId'
    属性


    希望这会有所帮助。

    我无法在OSX上的Firefox 12中复制这一点。我认为我所要做的事情需要一点背景知识。我已经编辑了我的问题。但我已经感谢你这么快的回应,先生。不,还不清楚。您甚至没有
    select2
    HTML元素。所以你想要什么还很不清楚。尝试将代码放入JSFIDLE,以便更好地了解现有的所有HTML元素。如果你使用它。您可以看到,带有2,3的选项有效,但不适用于带有较大数值的蝙蝠侠。您可以双击select1中的选项,将其移动到Select2,然后单击apply以反映对所选列表的更改。单击列表项的右角(图像为空,但您可以悬停以查看其中的锚点)我在Chrome和Firefox中都尝试了这一点,并且所有内容都正常工作…它对您有效??我似乎无法删除小丑(823456789)。我希望我能给你看一段视频-(我关于stackoverflow的第一个问题&似乎没有人能够复制这个问题。无论如何,谢谢您的时间,先生。非常感谢。非常感谢!!我知道它必须是关于整数/数字的值,但我无法使它工作。这实际上解决了两个问题,提供了更具意义的自定义属性。
    var check = $(this).attr('value'); // instead of looking for the parent
    ...
    // parent.remove(); // this line is removing what is already removed
    
    $('#list').append($("<li></li>").html(Joker(8123456789)'<a class=search-choice-close href=#></a>').attr('toonId', "8234567890"));
    
    <li class="selectedlistItems" toonId="8234567890">Joker(8123456789)<a class="search-choice-close" href="#"> </a></li>