JS Switch语句被忽略
JS Switch statement is ignored
fileType = document.getElementById('file-type-select');
fileType.addEventListener('change', function() {
setFileName(this.value);
});
setFileName();
function setFileName(fileType = 0) {
file = (function() {
let name = new Date().toISOString().slice(0, 19).replace(/-/g, "");
switch (fileType) {
case 1:
name += '.txt';
break;
case 2:
name += '.md';
break;
case 3:
name += '.html';
break;
default:
name += '.txt';
}
return {
'name': name,
}
})();
console.log(file.name);
}
<select id="file-type-select" name="file-type">
<option value="1">Plain text</option>
<option value="2">Markdown</option>
<option value="3">HTML source</option>
</select>
如您所见,在 setFileName
函数中,switch 语句始终使用默认值并且 file.name
始终以 .txt
结尾
这是为什么?我猜是在参数范围内的东西,但不能告诉
在setFileName
函数中,函数参数fileType
是string
值,不是number
值。
并且在 switch
命令上,您已经完成了与数字值的比较,应该将其更改为与 string
值进行比较,如下所示,它将起作用。
fileType = document.getElementById('file-type-select');
fileType.addEventListener('change', function() {
setFileName(this.value);
});
setFileName();
function setFileName(fileType = 0) {
file = (function() {
let name = new Date().toISOString().slice(0, 19).replace(/-/g, "");
switch (fileType) {
case '1':
name += '.txt';
break;
case '2':
name += '.md';
break;
case '3':
name += '.html';
break;
default:
name += '.txt';
}
return {
'name': name,
}
})();
console.log(file.name);
}
<select id="file-type-select" name="file-type">
<option value="1">Plain text</option>
<option value="2">Markdown</option>
<option value="3">HTML source</option>
</select>
fileType = document.getElementById('file-type-select');
fileType.addEventListener('change', function() {
setFileName(this.value);
});
setFileName();
function setFileName(fileType = 0) {
file = (function() {
let name = new Date().toISOString().slice(0, 19).replace(/-/g, "");
switch (fileType) {
case 1:
name += '.txt';
break;
case 2:
name += '.md';
break;
case 3:
name += '.html';
break;
default:
name += '.txt';
}
return {
'name': name,
}
})();
console.log(file.name);
}
<select id="file-type-select" name="file-type">
<option value="1">Plain text</option>
<option value="2">Markdown</option>
<option value="3">HTML source</option>
</select>
如您所见,在 setFileName
函数中,switch 语句始终使用默认值并且 file.name
始终以 .txt
这是为什么?我猜是在参数范围内的东西,但不能告诉
在setFileName
函数中,函数参数fileType
是string
值,不是number
值。
并且在 switch
命令上,您已经完成了与数字值的比较,应该将其更改为与 string
值进行比较,如下所示,它将起作用。
fileType = document.getElementById('file-type-select');
fileType.addEventListener('change', function() {
setFileName(this.value);
});
setFileName();
function setFileName(fileType = 0) {
file = (function() {
let name = new Date().toISOString().slice(0, 19).replace(/-/g, "");
switch (fileType) {
case '1':
name += '.txt';
break;
case '2':
name += '.md';
break;
case '3':
name += '.html';
break;
default:
name += '.txt';
}
return {
'name': name,
}
})();
console.log(file.name);
}
<select id="file-type-select" name="file-type">
<option value="1">Plain text</option>
<option value="2">Markdown</option>
<option value="3">HTML source</option>
</select>