我将根据其URL查询字符串创建页面标题
URL示例为:
void next_step(std::vector<std::string> &a)
{
std::vector<std::string> v;
v.swap(a);
// process vector ...
}
如果max_price = 50000,我的页面标题将是:低于500,000卢比的电话
如果URL仅包含以下品牌:
domain.com/pricelist/phones/?min_price=0&max_price=50000
页面标题将是:Apple手机价格表2018
如果URL同时包含价格和品牌,例如:
domain.com/pricelist/phones/?brand=apple
页面标题:价格低于50000卢比的Apple手机
这是我的代码:-
domain.com/pricelist/phones/?min_price=0&max_price=50000&brand=apple
答案 0 :(得分:0)
我认为,由于脚本的整体复杂性,您很难处理if/else
语句。尝试使其更简单,构建条件将变得轻而易举。
我尚未对其进行测试,但请查看此解决方案:
function setTitle () {
const search = window.location.search
.substring(1)
.split('&')
.map(pair => pair.split('='))
.reduce((acc, pair) => {
acc[pair[0]] = pair[1];
return acc;
}, {});
const brandPart = search.brand ? `${search.brand} phones` : 'Phones';
const maxPricePart = search.max_price ? `under Rs.${search.max_price}` : '';
const pricePart = maxPricePart || 'Price list 2018';
document.title = `${brandPart} ${pricePart}`;
}
也许它有一些问题,但是它更容易理解和维护。
答案 1 :(得分:0)
您的代码看起来不错,我认为您可以改进或 作为替代解决方案,您可以首先创建所有查询参数的JSON格式。 而且基于JSON,您可以轻松创建品牌名称。
https://gomakethings.com/getting-all-query-string-values-from-a-url-with-vanilla-js/
//get query paraeters in json format
var getParams = function (url) {
var params = {};
var parser = document.createElement('a');
parser.href = url;
var query = parser.search.substring(1);
var vars = query.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
params[pair[0]] = decodeURIComponent(pair[1]);
}
return params;
};
//get quer pareamaeter
var query_parameters = getParams(window.location.href);
var brand_name = '';
if ( query_parameters.max_price ) brand_name ="Phones Under Rs." + query_parameters.max_price;
if ( query_parameters.brand ) brand_name = query_parameters.brand.toUpperCase() + " phones Price list 2018"
if ( query_parameters.max_price && query_parameters.brand ) brand_name =query_parameters.brand.toUpperCase() + "phones Under Rs." + query_parameters.max_price;
答案 2 :(得分:0)
首先,(我认为)我会尽量避免使用正则表达式。如果您还没有听说过URL Search Params,则应该仔细阅读。这使得处理查询字符串非常简单。
我还更改了大小写,使其也不再使用正则表达式(来源为this answer)
现在开始使用if
语句,似乎您遇到了麻烦,请尝试将其逐步分解。
首先,我看maxPrice是否不为null,如果不为null,那么很好,我们有了第一个标题:Phones Under Rs.${maxPrice}
接下来,我检查brand
是否不为空(在maxPrice
if
内),如果brand
不是null
,我们可以安全地假设{{ 1}}也不是maxPrice
,因此我们可以将消息更改为null
现在,既然完成了在消息中只有2个变量的唯一情况,我们可以从第一个${brand} Phones Under Rs.${maxPrice}
跳回并继续向下移动到if
。现在,我检查else if
是否不是brand
。如果null
不是brand
,那么在这一点上,我们可以假设null
也是maxPrice
(否则代码将进入第一个null
),因此这给了我们最后的信息if
现在终于有了一个${brand} Phones
案例,以防万一我们错过了一些东西,我们可以记录下来并轻松修复代码。
如果您不熟悉字符串中的反引号Template Literals
,请快速注意
else