Javascript 向所有ul中的随机li添加类

Javascript 向所有ul中的随机li添加类,javascript,jquery,html,css,survey,Javascript,Jquery,Html,Css,Survey,谢谢各位: 更新: @MTCoster给出了正确的答案,如下所示: $ul.eachfunction{ var liArr=$this.childrenli; $liArr[Math.floorMath.random*liArr.length].addClass'selected'; }; 尝试使用。每个 试着用每一个 目前的代码是创建一个包含ul元素中所有li元素的数组,然后选择其中一个元素。您需要做的是首先选择所有ul元素,然后从每个元素中随机选择一个li元素。试着这样做: // se

谢谢各位:

更新:

@MTCoster给出了正确的答案,如下所示:

$ul.eachfunction{ var liArr=$this.childrenli; $liArr[Math.floorMath.random*liArr.length].addClass'selected'; };

尝试使用。每个

试着用每一个


目前的代码是创建一个包含ul元素中所有li元素的数组,然后选择其中一个元素。您需要做的是首先选择所有ul元素,然后从每个元素中随机选择一个li元素。试着这样做:

   // select all `ul` elements
   $("ul").each(function() {
      // select all `li` elements that are children of `this` `ul`
      var list = $("> li", this);
      list.eq(Math.random() * list.length).addClass("selected");
   })

编辑:必须将数组中的选定元素包装到jQuery选择器中;我已经更新了代码以反映这一点。

您目前拥有的代码是创建一个包含ul元素中存在的所有li元素的单个数组,然后选择其中一个。您需要做的是首先选择所有ul元素,然后从每个元素中随机选择一个li元素。试着这样做:

   // select all `ul` elements
   $("ul").each(function() {
      // select all `li` elements that are children of `this` `ul`
      var list = $("> li", this);
      list.eq(Math.random() * list.length).addClass("selected");
   })

编辑:必须将数组中的选定元素包装到jQuery选择器中;我已经更新了代码以反映这一点。

算术函数返回数字,您不必对它们调用parseInt。根据JavaScript中随机选择数组元素的问题,这里使用parseInt代替Math.floor。@MTCoster好的,它会起作用,但这肯定是一种令人困惑的方法。这也是不必要的。eq将自动将其参数转换为整数。看起来您试图在每个UL中选择相同的随机LI?如果是这样的话,您可以只对第n个子项进行筛选,而不用使用eq,比如->算术函数返回数字,您不必对它们调用parseInt。根据JavaScript中随机选择数组元素的问题,这里使用parseInt代替Math.floor。@MTCoster好的,它会起作用,但这绝对是一种令人困惑的方式,也没有必要。eq将自动将其参数转换为整数。看起来您试图在每个UL中选择相同的随机LI?如果是这样的话,你可以在第n个孩子身上进行筛选,而不是使用eq,类似这样的->抱歉,但它会显示uncaughttypeerror:liArr[Math.floor…]。addClass不是一个函数。。否则,这正是我想要的。这是我需要的,但有人能帮我修复它吗,这样我就不会得到:uncaughttypeerror:liArr[Math.floor…]。addClass不是一个函数。。我将把它标记为已解决。。。。感谢you@HassanIla抛出此错误是因为您试图对非jQuery对象调用jQuery方法。修复方法非常简单,只需将数组元素包装在jQuery选择器中。我更新了我的答案以反映这一点。非常感谢,我做了正确的回答:抱歉,但它说的是未捕获的TypeError:liArr[Math.floor…]。addClass不是一个函数。。否则,这正是我想要的。这是我需要的,但有人能帮我修复它吗,这样我就不会得到:uncaughttypeerror:liArr[Math.floor…]。addClass不是一个函数。。我将把它标记为已解决。。。。感谢you@HassanIla抛出此错误是因为您试图对非jQuery对象调用jQuery方法。修复方法非常简单,只需将数组元素包装在jQuery选择器中。我已经更新了我的答案以反映这一点。非常感谢我做出了正确的答案:并检查:more.addClassselected.propchecked,true;并检查:more.addClassselected.propchecked,true;
   // select all `ul` elements
   $("ul").each(function() {
      // select all `li` elements that are children of `this` `ul`
      var list = $("> li", this);
      list.eq(Math.random() * list.length).addClass("selected");
   })
$("ul").each(function() {
  var liArr = $(this).children("li");
  $(liArr[Math.floor(Math.random() * liArr.length)]).addClass('selected');
});