标记toggle,indexOf

本文展示了一个结合CSS样式和JavaScript实现的网页交互效果案例,包括按钮控制元素颜色变化及圆角转换,同时实现了点击元素边框样式切换的功能。
<head>
	<meta charset="UTF-8">
	<title></title>
	//css样式
	<style type="text/css">
		*{
			-webkit-transition: all .5s;
			-moz-transition: all .5s;
			-ms-transition: all .5s;
			-o-transition: all .5s;
			transition: all .5s;
		}
		
		.all{
			width: 1500px;
			text-align: center;
			margin: 0 auto;
		}
		
		.btn{
			width: 100px;
			height: 50px;
			margin-bottom: 20px;
			background-color: #4169E1;
			outline: none;
			border: 0;
			font-size: 20px;
			color: white;
		}
		
		.btn2{
			background-color: lightcoral;
		}
		
		.box {
			width: 1300px;
			overflow: hidden;
			border: 1px solid deeppink;
			margin: 0 auto;
			padding: 10px;
		}
		
		.box div {
			width: 50px;
			height: 50px;
			background-color: plum;
			float: left;
			margin: 10px;
			box-sizing: border-box;
		}
					
		.box .change{
			background-color: rebeccapurple;
			border-radius: 50%;
		}
		
		.box .clicked{
			border: 3px dotted deeppink;
		}
	</style>
</head>

<body>
	<div class="all">
		<button class="btn" id="btn">变色</button>
		<div id="box" class="box">
			<div></div>
			<div></div>
			<div></div>
			<div></div>
			<div></div>
			<div></div>
			<div></div>
			<div></div>
			<div></div>
			<div></div>
			<div></div>
			<div></div>
			<div></div>
			<div></div>
			<div></div>
		</div>
	</div>
	<script type="text/javascript">
		var boxDiv = document.getElementById("box");
		var oDivs = boxDiv.getElementsByTagName("div");
		var btn = document.getElementById("btn");
		var arr = [];
		for (var i = 0; i < oDivs.length; i++) {
			oDivs[i].index = i;
			oDivs[i].onclick = function(){
					// 得到 元素 在 arr 中的下标.
					// 如果indexOf(下标) ==-1 , 说明不存在
				if(arr.indexOf(this.index) == -1){
					// 不存在把下标放到数组中, 并添加边框样式
					arr.push(this.index);
					this.classList.add("clicked");
				}else{
					// 存在把下标移除, 无论是什么样式都清除
					arr.splice(arr.indexOf(this.index), 1);
					this.classList.remove("change");
					this.classList.remove("clicked");
				}
			}
		}
		var flag = true;
		btn.onclick = function(){
			// 本身操作
			if (flag) {
				btn.innerHTML = "不变色";
			} else{
				btn.innerHTML = "变色";
			}
			btn.classList.toggle("btn2");
			flag = !flag;
			// for 循环遍历装有 被点击 div 下标的数组
			// 通过下标取出每个被点击的 div, 然后变色
			 for (var i = 0; i < arr.length; i++) {
			 	 oDivs[arr[i]].classList.toggle("change");
			 }
		}
	</script>

</body>
”using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System.IO; public class QuizManager : MonoBehaviour { class Question { public string questionText; public string[] options; public int correctAnswerIndex; } [Header("UI References")] public Text questionText; public Text questionIndexText; public Text feedbackText; public Text accuracyText; public Button nextButton; public Button prevButton; public Button tipButton; public Button submitButton; public ToggleGroup optionToggleGroup; public List<Toggle> optionToggles; public List<Text> optionTexts; // 使用 private 访问修饰符 private List<Question> questions = new List<Question>(); private int currentQuestionIndex = 0; private int answeredCount = 0; private int correctCount = 0; private bool isAnswered = false; void Start() { LoadQuestionsFromFile("questions"); SetupUI(); ShowQuestion(0); } void LoadQuestionsFromFile(string fileName) { TextAsset file = Resources.Load<TextAsset>(fileName); if (file == null) { Debug.LogError("timu: " + fileName); return; } string[] lines = file.text.Split(new[] { "\r\n", "\r", "\n" }, System.StringSplitOptions.None); foreach (string line in lines) { if (string.IsNullOrEmpty(line) || string.IsNullOrEmpty(line.Trim())) continue; string[] parts = line.Split(':'); if (parts.Length < 6) continue; Question q = new Question { questionText = parts[0], options = new string[4], correctAnswerIndex = int.Parse(parts[5]) - 1 }; for (int i = 0; i < 4; i++) { q.options[i] = (i < parts.Length - 2) ? parts[i + 1] : "N/A"; } questions.Add(q); } } void SetupUI() { nextButton.onClick.AddListener(NextQuestion); prevButton.onClick.AddListener(PreviousQuestion); tipButton.onClick.AddListener(ShowHint); submitButton.onClick.AddListener(SubmitAnswer); foreach (var toggle in optionToggles) { toggle.group = optionToggleGroup; } for (int i = 0; i < optionToggles.Count; i++) { int index = i; optionToggles[i].onValueChanged.AddListener(delegate (bool isOn) { if (isOn) OnOptionSelected(index); }); } } void ShowQuestion(int index) { if (index < 0 || index >= questions.Count) return; currentQuestionIndex = index; Question q = questions[index]; questionText.text = q.questionText; questionIndexText.text = "第 " + (index + 1) + "/" + questions.Count + " 题"; feedbackText.text = ""; for (int i = 0; i < optionTexts.Count; i++) { optionTexts[i].text = q.options[i]; optionToggles[i].interactable = !isAnswered; } ClearSelection(); submitButton.interactable = !isAnswered; prevButton.interactable = (index > 0); nextButton.interactable = (index < questions.Count - 1); } void OnOptionSelected(int optionIndex) { // 可选 } public int GetSelectedOption() { foreach (Toggle toggle in optionToggleGroup.ActiveToggles()) { if (toggle.isOn) { return optionToggles.IndexOf(toggle); } } return -1; } void SubmitAnswer() { if (isAnswered) return; int selectedIndex = GetSelectedOption(); if (selectedIndex == -1) { feedbackText.text = "<color=#FFA500>请选择一个答案!</color>"; return; } isAnswered = true; answeredCount++; Question q = questions[currentQuestionIndex]; bool isCorrect = (selectedIndex == q.correctAnswerIndex); if (isCorrect) { correctCount++; feedbackText.text = "<color=green>✓ 回答正确!</color>"; } else { feedbackText.text = "<color=red>✗ 回答错误!正确答案是: " + q.options[q.correctAnswerIndex] + "</color>"; } DisableOptions(); submitButton.interactable = false; UpdateAccuracy(); } void UpdateAccuracy() { float accuracy = (answeredCount > 0) ? (float)correctCount / answeredCount * 100 : 0; accuracyText.text = "正确率: " + accuracy.ToString“运行不了,显示出现"Assets/Scripts/TestManager.cs(178,44): error CS1525: Unexpected symbol `end-of-file'"问题,为什么?怎么办?
06-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值