我有一个看似简单的javaScript函数,我正在尝试创建检查元素innerhtml的价值并根据答案吐出一个值,但是对于我的生活,我可以't使它起作用,没有任何错误。此功能是由OnClick事件触发的,不需要添加窗口。任何人都可以给我的任何洞察力都将不胜感激!这是我的html
<div class="col-md-8 col-xs-9 product-info">
<p id="planTitle" class="bold m-b-2">20 DAY SUPPLY // 40 CAPSULES // FMF</p>
<p>Price: <span class="pull-right" id="plan-amount">$79</span></p>
<p>Tax: <span class="pull-right">Included</span></p>
<p id="shipping-line">Shipping: <span class="pull-right" id="cart-shipping-cost">$9.99</span></p>
<p class="hidden">Coupon: <span class="pull-right" id="coupon-code">firstmonthfree20day</span></p>
</div>
和我的javascript
function updateShippingCost(country_region) {
var url;
var kkdk = '';
var planTitleesd = document.getElementById('planTitle').innerHTML;
console.log(planTitleesd);
if (planTitleesd == '10 Day Supply // 20 Capsules // FMF') {
kkdk = '5.99';
console.log(kkdk);
} else if (planTitleesd == '20 Day Supply // 40 Capsules // FMF') {
kkdk = '9.99';
console.log(kkdk);
} else if (planTitleesd == '30 Day Supply // 60 Capsules // FMF') {
kkdk = '14.99';
console.log(kkdk);
}
}
奇怪的是,console.log(plantitleesd)返回一个值,例如" 20天供应//40胶囊//FMF"但是所有其他控制台(KKDK)都没有。感谢您的帮助!
我已经用相关的html更新了原始问题,对此很抱歉。
您正在进行病例敏感的比较。您已经指出,将结果值与标题案例进行比较时,是所有上限。在比较之前,通过在两个操作数上调用tolowercase进行案例态度比较。另外,请实际发布您的标记。故障排除代码问题必须包含MCVE。 - 9分钟前碰撞
这是我正在寻找的简单问题的简单答案 - 谢谢Collind!
几乎可以肯定的是,您在Plantitleesd的开头/结束时都有Newline。尝试通过console.log('>' + planTitleesd + '<');
替换console.log(planTitleesd);
进行检查。
这是一个示例:https://jsfiddle.net/324aw9zz/1/
您应该避免在标签开启器/关闭和文本本身之间避免任何空间/新线:
<th id=planTitle>lala</th>
而不是
<th id=planTitle>
lala
</th>
为什么不沿着:使用.indexof()检查一个(或多个)字符串?
function updateShippingCost(country_region) {
var url;
var kkdk = '';
var planTitleesd = document.getElementById('planTitle').innerHTML;
if ( planTitleesd.indexOf('10 Day') > -1 && planTitleesd.indexOf('20 Capsules') > -1 ) {
kkdk = '5.99';
} else if (planTitleesd.indexOf('20 Day')) {
kkdk = '9.99';
} else if (planTitleesd.indexOf('30 Day')) {
kkdk = '14.99';
}
}
我也同意您应该删除案件敏感的字符串,例如(再次),可能会发生错别字等。
机会中只有一个错别字,或者您可能正在查看的空返回/新线。确保从响应中删除所有运输返回和更多的返回。看到AS,某些项目实际上可能会添加您没有注意到的项目。(例如一个公开标签的div)
听起来这个应用程序是一家商店,这可能会变得很大。我建议也许是一个返回您需要的结果的对象。
如果您可以创建适当的JSON对象,我认为我认为可以简化您的过程的JSFIDDLE。https://jsfiddle.net/0sscf798/
function updateShippingCost(country_region) {
var url;
var kkdk = '';
var planTitleArr = [];
var planTitleObj = {};
var planTitleesd = document.getElementById('planTitle').innerHTML;
// This would most likely be a JSON response of items from the page/category
planTitleObj = {
"10 Day Supply": {
"20 Capsules": {
"FMF": 1.23
}
},
"20 Day Supply": {
"20 Capsules": {
"FMF": 4.56
}
}
};
planTitleArr = planTitleesd.split(" // ");
var price = planTitleObj[planTitleArr[0]][planTitleArr[1]][planTitleArr[2]] || "There is a problem with the price."
alert("The Price is: " + price);
}
updateShippingCost('');