【发布时间】:2015-10-21 18:28:17
【问题描述】:
<div id="question-1" name="question"
<ul>
<li name="347815" class="MULTIPLE" id="7548094" value="7548094">1</li>
<li name="347815" class="MULTIPLE" id="7548095" value="7548095">2</li>
<li name="347815" class="MULTIPLE" id="7548096" value="7548096">3</li>
<li name="347815" class="MULTIPLE" id="7548097" value="7548097">4</li>
</ul>
</div>
<div id="question-2" name="question"
<ul>
<li name="347818" class="MULTIPLE" id="7548140" value="7548140">1</li>
<li name="347818" class="MULTIPLE" id="7548143" value="7548143">2</li>
<li name="347818" class="MULTIPLE" id="7548168" value="7548168">Hemköp</li>
<li name="347818" class="MULTIPLE" id="7548169" value="7548169">3</li>
<li name="347818" class="MULTIPLE" id="7548184" value="7548184">4</li>
<li name="347818" class="MULTIPLE" id="7548195" value="7548195">5</li>
<li name="347818" class="MULTIPLE" id="7548208" value="7548208">6</li>
</ul>
</div>
我需要一个 js "jquery" 代码来从所有 ul 列表中选择一个随机 li 元素。列表编号不断变化,所以我需要使用类似 .find();
这是我正确的代码,但它没有在所有 ul 中选择一个 li,它在随机 ul 中选择随机 li:
var list = $('ul > li');
list.eq(parseInt(Math.random()*list.length)).addClass('selected');
谢谢你们:)
更新:
@MTCoster 有正确的答案,这里是:
$("ul").each(function() {
var liArr = $(this).children("li");
$(liArr[Math.floor(Math.random() * liArr.length)]).addClass('selected');
});
【问题讨论】:
-
算术函数返回数字,您不必对它们调用
parseInt()。 -
这里使用
parseInt()代替Math.floor(),根据this 关于在JavaScript 中随机选择数组元素的问题。 -
@MTCoster 好的,它会起作用,但这绝对是一种令人困惑的方式。
-
这也是不必要的。
.eq()将自动将其参数转换为整数。 -
看起来您正试图在每个 UL 中选择相同的随机 LI?如果是这样,您可以只过滤 nth-child 而不是使用
eq,类似这样 -> jsfiddle.net/04b0ju4h/2
标签: javascript jquery html css survey