[英]How do I check if 2 variables have something in them and the other doesn't?
[英]Have a lot of variables that are in order. I need to convert them using JavaScript to contain something else but don't want to do it one by one
首先我不是程序員。 我需要為我的工作使用一些非常基本的 HTML、CSS 和 XML。 我使用的程序也允許運行 javascripts。
我的 XML 文件中通常有很多變量。 他們 go 是這樣的:
VAL001
VAL002
VAL003
VAL004
你懂了。 這些變量通常是復選框。 這些值可以是“已檢查”或“未檢查”。 我沒有將這些變量嵌入到 HTML 代碼中,而是傾向於將其轉換為其他內容,以便它變得更好。 像這樣:
if ( VAL001 == 'Checked' ) CHK001 = '✓';
else CHK001 = '';
完成此操作后,我在 HTML 中插入 CHK001(而不是 VAL001),因此如果選中該框,則我會得到一個很好的復選標記,而未選中則什么都沒有。 當有很多這樣的盒子時,一個一個地做並不是太有效。
我在 JavaScript 中嘗試的是:
var i;
for ( i = 1, i <= 9, i++ ) {
if ( VAL00$i == 'Checked' ) CHK00$i = '✓'
else CHK00$i = '';
}
var j;
for ( j = 10, j <= 99, j++ ) {
if ( VAL0$j == 'Checked' ) CHK0$j = '✓'
else CHK0$j = '';
}
我認為這會用 i 和 j 替換最后一個數字,我會得到我需要的。 不幸的是,這只是提出了一個 ReferenceError 說 VAL00$i 找不到。
如果我用 [i] 和 [j] 替換 $i 和 $j,我會得到相同的 ReferenceError,但是這次 i 和 j 沒有被告知是錯誤的,所以我得到 VAL00 找不到。 一個簡單的解決方案真的會加快我的速度。 先感謝您!
您可以將變量放在一個數組中,然后使用 map 來檢查變量並將其更改為刻度線與否。
var array = [
VAL001,
VAL002,
VAL003,
VAL004
];
var newArray = array.map(val=>{
if (val === 'Checked') return '✓';
else return '';
});
或者,如果您在檢查完所有內容后需要知道變量的名稱,您可以使用 object。
var obj = {
VAL001: VAL001,
VAL002: VAL002,
VAL003: VAL003,
VAL004: VAL004
};
var newObj;
for (var i of Object.keys(obj){
if (obj[i] === 'Checked') newObj[i] = '✓';
else newObj[i] = '';
}
我們缺少有關您的環境的一些信息,但假設您的框架為您提供了一組全局變量,這應該可以幫助您入門:
for (var i=1, i<=99, i++) {
var i_padded = i.toString().padStart(3, 0);
if (window["VAL" + i_padded] == 'Checked') {
window["CHK" + i_padded] = '✓';
} else {
window["CHK" + i_padded] = "";
}
}
為了訪問您的全局變量,我在這里使用window
object。 這是假設您在瀏覽器或類似瀏覽器的環境中運行此 JS。
如果您將VAL001
變量作為obj
中的屬性,那么您可以執行如下操作。
這里i.toString().padStart(3, 0)
,對於i = 1
它將返回001
,對於i=10
它將返回010
; 您可以使用obj[propertyName]
訪問 object 的屬性。 所以這些值可以通過 obj[ VAL${index}
] 訪問。
var obj = { VAL001: 'Checked', VAL002: '', VAL003: 'Checked', VAL004: '', VAL010: '', VAL099: 'Checked', }; var result = {}; for (var i = 1; i <= 99; i++) { let index = i.toString().padStart(3, 0); if (obj.hasOwnProperty(`VAL${index}`)) { if (obj[`VAL${index}`] == 'Checked') result[`CHK${index}`] = '✓' else result[`CHK${index}`] = ''; } } console.log(result);
如果您在全局 scope 中有variables
,那么您可以使用windows["VAL001"]
。
var VAL001 = 'Checked', VAL002 = '', VAL003 = 'Checked', VAL004 = '', VAL010 = '', VAL099 = 'Checked'; for (var i = 1; i <= 99; i++) { let index = i.toString().padStart(3, 0); if (window.hasOwnProperty(`VAL${index}`)) { if (window[`VAL${index}`] == 'Checked') window[`CHK${index}`] = '✓' else window[`CHK${index}`] = ''; console.log(`CHK${index} = ` + window[`CHK${index}`]); } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.