gpt4 book ai didi

javascript相当于php的for循环效率

转载 作者:可可西里 更新时间:2023-11-01 13:44:51 26 4
gpt4 key购买 nike

第一次发帖,如果遗漏了一些明显的地方,我深表歉意。

我想做的很简单....在 php 中。我可以在睡梦中做到。但是,我的页面需要集成javascript,我还不是特别熟练。

我对脚本的工作部分有疑问,我想提高效率。

问题:我有一系列复选框,如果用户做了某事,他们将“检查”这些复选框。 Javascript 工作得很好,但我需要使用一个循环,这样我的大脑就不会因为所有不必要的代码行而受到伤害。

这是笨重丑陋的东西:

$("#M1L1Box").click(function() {
$("#M1L1BoxFeedback").text(this.checked ? "- completed" : "- mark as complete");
});

$("#M1L2Box").click(function() {
$("#M1L2BoxFeedback").text(this.checked ? "- completed" : "- mark as complete");
});

$("#M1L3Box").click(function() {
$("#M1L3BoxFeedback").text(this.checked ? "- completed" : "- mark as complete");
});

$("#M1L4Box").click(function() {
$("#M1L4BoxFeedback").text(this.checked ? "- completed" : "- mark as complete");
});

$("#M1L5Box").click(function() {
$("#M1L5BoxFeedback").text(this.checked ? "- completed" : "- mark as complete");
});

$("#M1L6Box").click(function() {
$("#M1L6BoxFeedback").text(this.checked ? "- completed" : "- mark as complete");
});

$("#M1L7Box").click(function() {
$("#M1L7BoxFeedback").text(this.checked ? "- completed" : "- mark as complete");
});

$("#M1L8Box").click(function() {
$("#M1L8BoxFeedback").text(this.checked ? "- completed" : "- mark as complete");
});

这是我在浪费时间尝试提高效率的一个版本:

  for(i=1; i<=8; i++){

var checkBoxCode = "#M1L" + i +"Box";
var feedbackCode = "#M1L" + i + "BoxFeedback";

$(checkBoxCode).click(function() {
$(feedbackCode).text(this.checked ? "- completed" : "- mark as complete");
});
}

抱歉,这是 html:

<input type="checkbox" id="M1L1Box" class="checkbox1" value="M1L1">
<label for="M1L1Box" id="M1L1Label"> - Module 1 Lesson 1 <span id="M1L1BoxFeedback"></span></label><br>

<input type="checkbox" id="M1L2Box" class="checkbox1" value="M1L2">
<label for="M1L2Box" id="M1L2Label"> - Module 1 Lesson 2 <span id="M1L2BoxFeedback"></span></label><br>

<input type="checkbox" id="M1L3Box" class="checkbox1" value="M1L3">
<label for="M1L3Box" id="M1L3Label"> - Module 1 Lesson 3 <span id="M1L3BoxFeedback"></span></label><br>

<input type="checkbox" id="M1L4Box" class="checkbox1" value="M1L4">
<label for="M1L4Box" id="M1L4Label"> - Module 1 Lesson 4 <span id="M1L4BoxFeedback"></span></label><br>

<input type="checkbox" id="M1L5Box" class="checkbox1" value="M1L5">
<label for="M1L5Box" id="M1L5Label"> - Module 1 Lesson 5 <span id="M1L5BoxFeedback"></span></label><br>

<input type="checkbox" id="M1L6Box" class="checkbox1" value="M1L6">
<label for="M1L6Box" id="M1L6Label"> - Module 1 Lesson 6 <span id="M1L6BoxFeedback"></span></label><br>

<input type="checkbox" id="M1L7Box" class="checkbox1" value="M1L7">
<label for="M1L7Box" id="M1L7Label"> - Module 1 Lesson 7 <span id="M1L7BoxFeedback"></span></label><br>

<input type="checkbox" id="M1L8Box" class="checkbox1" value="M1L8">
<label for="M1L8Box" id="M1L8Label"> - Module 1 Lesson 8 <span id="M1L8BoxFeedback"></span></label><br>

不确定为什么这不起作用,但可以肯定的是,您的 js 奇才们正在拍打您的额头,因为这是多么容易。我已经尝试了在这里和其他地方找到的多种解决方案,但始终无法成功地将示例改编为我的代码。非常感谢您的帮助!!!

最佳答案

为什么不直接使用一个通用类并使用字符串连接来获取第二个元素。

$(".item").on("change", function() {
$("#" + this.id + "Feedback").text(this.checked ? "- completed" : "- mark as complete");
}).trigger("change");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="M1L1Box" class="item" />
<label id="M1L1BoxFeedback"></label>
<br/>
<input type="checkbox" id="M2L2Box" class="item" />
<label id="M2L2BoxFeedback"></label>
<br/>
<input type="checkbox" id="M3L3Box" class="item" />
<label id="M3L3BoxFeedback"></label>
<br/>

根据您的 HTML 结构,您甚至不需要 JavaScript 来更改链接到复选框的元素的文本。

.item + label span { display: none }
.item + label span + span { display: inline; }
.item:checked + label span { display: inline; }
.item:checked + label span + span { display: none; }
<input type="checkbox" id="M1L1Box" class="item" />
<label id="M1L1BoxFeedback"> - <span>completed</span><span>mark as complete</span></label>
<br/>
<input type="checkbox" id="M2L2Box" class="item" />
<label id="M2L2BoxFeedback"> - <span>completed</span><span>mark as complete</span></label>
<br/>
<input type="checkbox" id="M3L3Box" class="item" />
<label id="M3L3BoxFeedback"> - <span>completed</span><span>mark as complete</span></label>
<br/>

关于javascript相当于php的for循环效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34799311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com