元素的-1下标是什么意思?

What does -1 index of an element mean?

本文关键字:意思 是什么 下标 元素      更新时间:2023-09-26

我正在尝试调试下面的jquery/js代码。所以我在寻找元素的索引。但是它返回的是-1

在jsFiddle中它工作得很好。但是当迁移到asp.net IDE时,这是给-1

标记:

<div class="cart">
   <h2>Cart 1</h2>
   <p>Books </p> 
     <table class="cartcontent" data-options="fitColumns:true, singleSelect: true">                                
         <thead>
           <tr>
               <th data-options="field:'name',width:100">Name</th>
               <th data-options="field:'quantity',width:100">Quantity</th>
               <th data-options="field:'balance',width:100,align:'right'">Balance</th>
               <th data-options="field:'remove',width:100,align:'right'">Remove</th>
            </tr>
         </thead>
      </table>
</div>
jquery/js:

function loadData(cartIndex, event) {        
    alert($('.cart').index());
    var $cart = $('.cart:eq(' + cartIndex + ')');   
    alert($cart.index()); //returns -1
    $cart.find('.cartcontent').datagrid('loadData', data[cartIndex]);    
}

为什么这里返回-1索引,这个-1是什么意思?

-1表示该对象无法在数组中找到。

$cart.index()返回-1,因此$cart中的内容无法找到。在上面一行中,您将$('.cart:eq(' + cartIndex + ')')分配给$cart。因此,选择器.cart:eq(' + cartIndex + ')'不匹配html中的任何元素。

表示jQuery对象$cart不包含任何元素

.index ()

如果没有找到元素,.index()将返回-1。

感谢大家帮我想出这么多我想不到的点子。

代码没有像预期的那样工作的一个主要原因是由于jquery/js脚本函数在DOM加载之前被调用。这是@Rory mcrossan最初评论的。我通过搜索找到了这篇文章:在正确的时间运行你的代码。

@AmmarCSE从我最早的帖子实际上问我"所以你的意思是你有一个点击处理程序附加到。cart和内部你想加载表?"

我不知道这在jquery/javascript和整个web的背景下是什么。然而,这帮助我很多理解也许我需要一个eventlistener,并进一步思考为什么我必须使用一个按钮点击事件和如何pagload/domload不适合这种情况。

@Arun p Johny指出了许多方法来发现元素是否存在,同时运行代码。

我把js代码执行在这里:

</body>
    <script>
        document.addEventListener("DOMContentLoaded", theDomHasLoaded, false);
        alert("haha DOM content is loaded");
        function theDomHasLoaded(e) {
            addAll(0, e);
        }
    </script>     
    <script type="text/javascript" src="cart_Test.js"> </script>
</html>

我来自c#背景,使用相当舒适的VS IDE和强大的调试工具,我意识到调试jQuery, js代码相当乏味。

由于这是一个将迁移框架从js迁移到asp.net的测试,所以我尝试了页面加载、下载事件。然而,在实际实现中,我想在按钮单击事件上加载这些购物车html表。到那时,整个DOM已经加载完毕。我今天在这里学到了很多,谢谢大家。