[英]Triple nested JS IF statement
我在使用三層嵌套IF語句時遇到問題。
我有一個帶有兩個單選按鈕的問題表格,這個問題並不總是可見的。 我想捕獲所做的選擇,但是默認情況下,單選按鈕未選中,並且在源代碼中仍然可見,但是使用CSS display:none進行隱藏。 因此,我需要指定僅在做出選擇后才發送用於選擇的數據(用於測試的控制台日志)。
邏輯應該是,如果div可見,則檢查是否選擇了Q3_1,如果為true,則發送是,如果為false,則檢查是否選擇了Q3_0,如果為true,則發送False,如果未選擇則不發送。
我認為最好具有以下邏輯,但我也無法使其正常工作。
如果div可見且選擇了Q3_1,則發送是;否則如果div可見且選擇了Q3_0,則發送否
提前謝謝了。
$(function () {
// Handler for .ready() called.
if ($("[id^=divWantMedical]").is(":visible")) {
if (document.querySelector("[id$='PreexistingConditions.Question3_1']").checked == true){
console.log("Send Yes");
} else {
if ((document.querySelector("[id$='PreexistingConditions.Question3_0']").checked == true){
console.log("Send No");
} else {
console.log("Don't send anything");
}
}
}
});
if
您在if
后面加上一個括號:
if ((document.querySelector("[id$='PreexistingConditions.Question3_0']").checked == true) {
應該
if (document.querySelector("[id$='PreexistingConditions.Question3_0']").checked == true){
對於單選按鈕,應始終確保默認情況下選中一個單選按鈕,否則用戶在不重新加載頁面(或重置表單)的情況下無法返回到初始狀態(兩個按鈕均未選中),但是重置按鈕似乎快死了)。
在這種情況下,必須始終選擇一個按鈕,因此您將始終發送是/是或否/否。
但是,您似乎想涵蓋兩種情況都未選中的情況(可能取消提交並顯示錯誤消息)。 因此,以簡化形式,您想執行以下操作:
function doCheck(el) { var form = el.form; if (form.isVisible.checked) { if (form.Q[1].checked) { form.result.value = 'Send Yes'; } else if (form.Q[0].checked) { form.result.value = "Send No"; } else { form.result.value = "Don't send anything"; } } else { form.result.value = 'Element not visible'; } }
<form onsubmit="return false"> <fieldset><legend>Logic test</legend> Visible?<input type="checkbox" name="isVisible" checked><br> Q3_0<input type="radio" name="Q"><br> Q3_1<input type="radio" name="Q"><br> <input type="button" value="Test" onclick="doCheck(this)"> <input type="reset"><br> </fieldset> <input name="result" readonly> </form>
如果該元素不可見,則if邏輯都不會運行。 我使用了一個復選框來簡化元素是否可見的邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.