【发布时间】:2017-06-23 17:28:02
【问题描述】:
我很难找出执行以下操作的最佳方法。我得到了 0 到 x 个字符串名称,即:Zillow、Trulia。我想要做的是将图像与这些字符串名称相关联,然后将它们显示到列表中。我正在尝试执行 switch 语句,但不确定这是否适用于超过 1 个条件...如果我错了,请纠正我。
例如,变量列表包含两个项目(Zillow/Trulia),我如何检查 ky split 函数变量的多个值,然后添加输出:$('#review-icon-list').wrapInner('<li class="review-icon">' + zillowImg + '</li>');
现在我的 switch case 抛出了一个意外的令牌错误,但我认为我无论如何都没有使用正确的方法。有谁知道我会怎么做?我会做某种循环吗?如果是,我将如何构建它?
var reviewSiteNames = 'Zillow,Trulia';
reviewSiteNames = reviewSiteNames.split(',');
console.log(reviewSiteNames);
var zillowImg = '<img src="https://s3.amazonaws.com/retain-static/www/zillow.jpg" alt="Zillow">';
var truliaImg = '<img src="https://s3.amazonaws.com/retain-static/www/trulia.png" alt="Trulia">';
if (reviewSiteNames == '') {
$('#no-current-reviewSites').html('No review sites currently added')
}
/*else if (reviewSiteNames) {
$('#review-icon-list').wrapInner('<li class="review-icon"></li>');
}*/
switch (true) {
case (reviewSiteNames.indexOf('Zillow') >= 0):
$('#review-icon-list').wrapInner('<li class="review-icon">' + zillowImg + '</li>');
break;
case (reviewSiteNames.indexOf('Realtor.com') >= 0):
$('#review-icon-list').wrapInner('<li class="review-icon">' + realtorDotComImg + '</li>');
break;
case (reviewSiteNames.indexOf('Trulia') >= 0):
$('#review-icon-list').wrapInner('<li class="review-icon">' + truliaImg + '</li>');
default: return '';
};
尝试这个的新方法。唯一显示的图像是 each 函数中的最后一个 if 语句。
$.each(reviewSiteNames, function (index, value) {
if (reviewSiteNames.includes('Zillow')) {
$('#review-icon-current').wrapInner('<li class="review-icon">' + zillowImg + '</li>');
}
if (reviewSiteNames.includes('Trulia')) {
$('#review-icon-current').wrapInner('<li class="review-icon">' + truliaImg + '</li>');
}
//return (value !== 'three');
});
【问题讨论】:
-
必须是
reviewSiteNames.indexOf('Trulia')吗?为什么不能用===代替? -
@ibrahimmahrir 我使用了这个站点上的一个例子,它使用了
indexOf,所以我认为这是正确的方法,但如果===有效,那就没问题了。我只是不确定如何让它发挥作用。 -
===是检查类型是否也匹配的运算符。这不是问题。switch语句肯定被滥用了。 -
错误是因为
default: return '';(如果代码没有包装在函数中)。 -
+ 你能解释更多你想要达到的目标吗?这仍然是模糊的。
标签: javascript jquery arrays loops