javascript - 如何在三元语句中添加第三个条件?
问题描述
我有一个带有 3 个单选按钮的搜索框。书籍和网站单选按钮有效。当您在选择其中任何一个单选按钮的情况下输入术语时,它会相应地执行搜索。但是,我想添加另一个条件,以便在勾选第二个单选按钮(杂志)时,它会执行对该 url 的搜索。链接到我的小提琴https://jsfiddle.net/pk4mowfg/
这是我认为需要修复才能实现目标的路线
searchType === 'website'? window.open(websiteUrl, '_blank') : window.open(catalogUrl, '_blank');
<script>
let searchType = "catalog";
$("#catalog").prop('checked', true);
$("#editsubmit").click(function(e){
e.preventDefault();
if ($("#q").val().length > 0){
let term = $("#q").val().split(' ').join("%20");
let websiteUrl = 'https://www.delawarelibrary.org/search/node/'+ term;
let magUrl = 'https://ohioweblibrary.org/search/?q='+ term;
let catalogUrl = 'https://catalog.clcohio.org/polaris/search/searchresults.aspx?ctx=106.1033.0.0.24&type=Keyword&term='+term;
searchType === 'website'? window.open(websiteUrl, '_blank') : window.open(catalogUrl, '_blank');
}
});
$('#frmSearch').keypress(function (e) {
if ($("#q").val().length > 0){
if(e.which == 13) {
e.preventDefault();
let term = $("#q").val().split(' ').join("%20");
let websiteUrl = 'https://www.delawarelibrary.org/search/node/'+ term;
let magUrl = 'https://ohioweblibrary.org/search/?q='+ term;
let catalogUrl = 'https://catalog.clcohio.org/polaris/search/searchresults.aspx?ctx=106.1033.0.0.24&type=Keyword&term='+term;
searchType === 'website'? window.open(websiteUrl, '_blank') : window.open(catalogUrl, '_blank');
}
}
});
$("#catalog").click(function(){
searchType = 'catalog';
});
$("#owl").click(function(){
searchType = 'mag';
console.log('magclicked');
});
$("#site").click(function(){
searchType = 'website';
});
</script>
解决方案
您可以定义一个对象和一个将您映射到 url的函数,而不是if else
语句或嵌套三元组urlMapper
searchType
const urlMapper = {
website: 'website url',
catalog: 'catalog url'
}
const getUrl = searchType => urlMapper[searchType] || 'default url';
console.log(
getUrl('website'),
getUrl('catalog'),
getUrl('unknown')
);
推荐阅读
- sqlite - 如何修复错误:“无法启用约束。一行或多行包含违反非空、唯一或外键约束的值”
- php - 使用 laravel 存储数据
- angular - Angular 10:VScode 在某些目录的绝对路径上出错,而不是其他目录
- python - 熊猫数据框到具有特定格式的字典
- sql - 使用 sp_send_dbmail 查询不使用参数
- python - Pandas 根据 ID 列生成一列随机数
- jsf - Omnifaces:o:socket 与 o:commandScript 或 f:ajax 并避免 ajax 请求
- java - 有没有办法在 android 中使用 MediaRecorder 录制系统声音?
- r - R - 优化 X,使得所有 n 的 min(sum(X_i)),其中 X_n + X_(n-1) + X_(n-2) >= Y_n,其中 Y 对所有 n 都是已知的
- android - iOS和Android可以使用蓝牙(特别是BLE)相互接收数据吗