如何基于 javascript 中的对象文字创建 if/elseif/else 语句
How can I create an if/elseif/else statement based on an object literal in javascript
我想有一个基于对象文字的if/else if/else语句。对象文字将由用户生成,因此我不知道它会持续多长时间,尽管我知道键/值对命名方案。
例如,我有一些代码可以获取视口宽度和一个更新下面 img src 属性的函数
vpwidth = window.innerWidth;
function modifyImgSrc (srcModifier) {
src = src.replace(".jpg", srcModifier + ".jpg");
src = src.replace(".png", srcModifier + ".png");
src = src.replace(".gif", srcModifier + ".gif");
};
然后我有我的对象文字
var brkpnts = [
{width: 320, srcmodifier: '-s'},
{width: 768, srcmodifier: '-m'},
{width: 1024, srcmodifier: '-l'},
];
我想生成一个基于对象文字的 if 语句
if ( vpwidth <= brkpnts[0].width ) {
modifyImgSrc(brkpnts[0].srcmodifier);
}
else if ( vpwidth <= brkpnts[1].width ) {
modifyImgSrc(brkpnts[1].srcmodifier);
}
else {
modifyImgSrc(breakpoints[2].srcmodifier);
}
虽然由于用户可以修改对象文字,我如何生成一个 if/else if/else 语句来匹配用户添加到对象文字的内容。例如,可能有 3 个以上的键/值对。
var breakpoints = [
{width: 320, srcmodifier: '-xs'},
{width: 534, srcmodifier: '-s'},
{width: 768, srcmodifier: '-m'},
{width: 1024, srcmodifier: '-l'},
{width: 1440, srcmodifier: '-xl'}
];
在这种情况下,我想要一个看起来像这样的 if 语句。
if ( vpwidth <= brkpnts[0].width ) {
modifyImgSrc(brkpnts[0].srcmodifier);
}
else if ( vpwidth <= brkpnts[1].width ) {
modifyImgSrc(brkpnts[1].srcmodifier);
}
else if ( vpwidth <= brkpnts[2].width ) {
modifyImgSrc(brkpnts[1].srcmodifier);
}
else if ( vpwidth <= brkpnts[3].width ) {
modifyImgSrc(brkpnts[1].srcmodifier);
}
else {
modifyImgSrc(breakpoints[4].srcmodifier);
}
这可能吗?如果是这样,如何,这是实现这一目标的最佳方法吗?
遍历数组:
var modified = false;
for(var i = 0, len = brkpnts.length; i < len; i++) {
if(vpwidth <= brkpnts[i].width) {
modifyImgSrc(brkpnts[i].srcmodifier);
modified = true;
break;
}
}
// Use the biggest one if vpwidth larger than all
if(!modified) {
modifyImgSrc(brkpnts[brkpnts.length - 1].srcmodifier);
}
编辑:虽然,Xander在他的评论中是正确的,但您可能应该使用媒体查询。
vpwidth = window.innerWidth;
function modifyImgSrc (srcModifier) {
src = src.replace(".jpg", srcModifier + ".jpg");
src = src.replace(".png", srcModifier + ".png");
src = src.replace(".gif", srcModifier + ".gif");
};
var breakpoints = [
{width: 320, srcmodifier: '-xs'},
{width: 534, srcmodifier: '-s'},
{width: 768, srcmodifier: '-m'},
{width: 1024, srcmodifier: '-l'},
{width: 1440, srcmodifier: '-xl'}
];
for(var i=0; i<breakpoints.length;i++)
{
if(breakpoints[i].width == vpwidth)
{
modifyImgSrc(breakpoints[i].srcmodifier);
break;
}
}
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如果 a 为 false,则 if(a) === if(false)
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- 正在尝试使用if和else添加类,但无法正常工作
- 在PHP中使用javascript更改页面标题'if'
- gulp-if-javascript文件,但不在gulp-useref的特定目录中
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- 什么是&&在没有if的行中的变量之间
- 另一个if(!$scope.$$phase)$scope$apply()szenario-需要帮助才能通关
- Sharepoint JScript if语句未执行
- Javascript:If-then语句在函数中不起作用
- IF ELSEIF语句中的Java脚本逻辑运算符
- if 和 elseif 语句都会触发
- do/while语句中的if-elseif语句无限循环javascript
- 使用cookie(javascript)时,for循环中的If/Elseif语句出现问题
- 如何基于 javascript 中的对象文字创建 if/elseif/else 语句
- JavaScript - 当满足 if/ elseif 条件时更改类
- 正则表达式的If-ElseIf-Else条件