Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
Javascript jquery混淆代码_Javascript_Jquery_Cart_Shopping - Fatal编程技术网

Javascript jquery混淆代码

Javascript jquery混淆代码,javascript,jquery,cart,shopping,Javascript,Jquery,Cart,Shopping,我正在从web示例学习Jquery和Javascript。我有很好的工作知识,但一些代码仍然绊倒了我。以下代码用于购物车隐藏签出按钮,并替换为显示有关购物车最低要求消息的div。不过有一部分代码让我很反感 function getCollectionCount() { var totalCollectionCount = 0; var collection = $('td[alt*="Collection"]'); for (var i = 0; i < collect

我正在从web示例学习Jquery和Javascript。我有很好的工作知识,但一些代码仍然绊倒了我。以下代码用于购物车隐藏签出按钮,并替换为显示有关购物车最低要求消息的div。不过有一部分代码让我很反感

function getCollectionCount() {
  var totalCollectionCount = 0;    
  var collection = $('td[alt*="Collection"]');
  for (var i = 0; i < collection.length; i++) {
    var curVal = $(collection[i]).find("select").val();
    if (curVal != undefined){
      totalCollectionCount += parseInt(curVal);
    }
  }
td[alt*=“Collection”]
选择其
alt
属性包含
Collection
的所有
元素,例如:

<td alt="Collection"></td>
<td alt="CollectionFoo"></td>
<td alt="BarCollection12324343"></td>

但不是

<td></td>
<td alt=""></td>
<td alt="Foo"></td>


旁注:这是一个非常基本的问题,可以通过阅读以下内容轻松回答:


在你问之前,请尝试研究一下

这是一个jQuery属性选择器子句。它正在选择任何
td
元素,该元素具有名为
alt
的atrtibute,其字符串包含值
Collection

包含选择器:

jQuery有许多有用的属性选择器。这是他们的主要参考页。如果您刚刚开始使用jQuery,那么非常值得一读


该代码返回其“alt”属性包含“Collection”的每个td元素


jQuery充满了这些需要永远学习的时髦快捷方式,所以我总是在桌上放一份:)

这段代码可以更简单、简短地重写如下:

function getCollectionCount() {
    var totalCollectionCount = 0;    
    $('td[alt*="Collection"] select').each(function() {
        var val = this.value || "0";
        totalCollectionCount += parseInt(val, 10);
    });
    return(totalCollectionCount);
}
这就是它的工作原理:

  • 将totalCollectionCount初始化为0
  • 在alt属性中查找所有具有字符串“Collection”的td元素,然后在该td中查找select元素
  • 迭代所有符合上述条件的元素
  • 使用select对象的值或“0”(如果没有值或为空)初始化局部变量
  • 将该值转换为一个数字(必须将基数传递给parseInt,这样它就不会猜测),并将其添加到目前为止的小计中
  • 返回我们找到的总数

  • 也许jquery文档是一个好地方:这里有一个有用的站点:the。该网站的布局非常混乱,但其想法是,您清除“直接输入”文本区域,键入CSS选择器,然后单击“解释此”按钮,并将其隐藏在页面下方。我要注意,从风格上讲,使用“alt”属性值作为驱动JavaScript逻辑的工具有点不稳定或“代码臭”. 另外,您确定“*=”表示“以开头”,而不仅仅是“包含”吗?就我个人而言,我永远也记不起这样的事情。谢谢你,我从来没有想到过,但这是有道理的。所以我可以根据它的属性选择任何特定的元素?例如
    div[alt*=“test1”]
    将选择所有
    元素,属性为
    test1
    @Pointy,那么您建议使用什么来代替
    alt
    属性呢?您是对的,在查看您的回答后,我发现这是一个非常基本的问题,我曾打电话给自己试图弄清楚它,这是一个大得多的项目的一小部分,我只是在这一部分上被难住了。如果问题过于简单,我深表歉意,但谢谢大家的回答。“alt”属性将包含描述图像的用户指示消息,以防图像因某种原因无法显示。这种消息传递可能会被翻译成另一种语言,或者由于文体原因而发生变化,因此使用代码中的“alt”值是一种“脆弱”的构造。还有其他属性可以也应该用来控制JavaScript——比如“类”,以及HTML5的“数据任意”属性家族。
    function getCollectionCount() {
        var totalCollectionCount = 0;    
        $('td[alt*="Collection"] select').each(function() {
            var val = this.value || "0";
            totalCollectionCount += parseInt(val, 10);
        });
        return(totalCollectionCount);
    }