我有一个在线商店,只能有限制地对代码进行正确的编辑。
我正在尝试实施适当的价格模式:
<span itemprop="price">$57.00</span>
这是不正确的。
需要像这样设置
<span itemprop="priceCurrency" content="USD">$</span>
<span itemprop="price">57.00</span>
JavaScript或jQuery中是否有可以通过分离货币符号和价格来操纵它?
由于
答案 0 :(得分:1)
您获得 ELEMENT 文字:
var value = $("span[itemprop='price'").text();
然后你可以使用正则表达式生成html,如:
var html = '$57.00'.replace(/([^\d])(\d+)/,
function(all, group1, group2){
return 'some html here =' + group1 + '= more hear =' + group2 });
答案 1 :(得分:0)
中的某些内容
// find all span's with itemprop price
document.querySelectorAll("span[itemprop='price']").forEach(function(sp){
// grab currency (first char)
var currency = sp.innerText.substr(0,1);
// remove first char from price val
sp.innerText = sp.innerText.substr(1);
// create new element (our price-currency span)
var currencySpan = document.createElement("span");
currencySpan.innerText = currency;
currencySpan.setAttribute("itemprop", "priceCurrency");
currencySpan.setAttribute("content", "USD");
// Append it before the old price span
sp.parentNode.insertBefore(currencySpan, sp);
});
应该做你的事。
请参阅演示:https://jsfiddle.net/dfufq40p/1/(更新以使效果更明显)
答案 2 :(得分:0)
可能不是100%没有错误,但它应该让你开始:
<script type="text/javascript">
var n = document.getElementsByTagName('*')
for(var i=0;i<n.length;i++)
{
if(n[i].hasAttribute('itemprop')) //get elements with itemprop attribute
{
var p = n[i].parentNode
var ih = n[i].innerHTML //grab the innerHTML
var num = parseFloat(ih) //get numeric part of the innerHTML - effectively strips out the $-sign
n[i].innerHTML = num
//create new span & insert it before the old one
var new_span = document.createElement('span')
new_span.innerHTML = '$'
new_span.setAttribute('itemprop', 'priceCurrency')
new_span.setAttribute('currency', 'USD')
p.insertBefore(new_span, n[i])
}
}
</script>
答案 3 :(得分:0)
这应该有效 - querySelectorAll应该更快一点,而且我相信正则表达式不仅可以用于USD,而且我相信。
function fixItemPropSpan() {
var n = document.querySelectorAll('[itemprop]');
for (var i = 0; i < n.length; i++) {
var p = n[i].parentNode;
var ih = n[i].innerHTML;
var num = Number(ih.replace(/[^0-9\.]+/g, ""));
n[i].innerHTML = num;
//create new span & insert it before the old one
var new_span = document.createElement('span');
new_span.innerHTML = '$';
new_span.setAttribute('itemprop', 'priceCurrency');
new_span.setAttribute('currency', 'USD');
p.insertBefore(new_span, n[i]);
}
}
答案 4 :(得分:-1)
以下是关于如何使这项工作的建议,但我不建议这样做(ribqkjnwyysrecjqeasygtrxauwnxcsvnwmssfhshxtilaonilatiyrebpxxecrcfffbenlnahpvjdqtabygyjsqkfgsswgpvceaifbqjexjlzmtaqbnueidfgohsjwzzbsnfqwsjtwowpjsupemmcffhsmxyftdrgfozxhzbxjarfqcsembypbhigowvahqzuttfeijupsaulgxlwlacugccicoawgysueeyopiumkbbercwdnjoohvdcsiqsbd
的情况太多)。
Example可用于将错误格式转换为正确格式的逻辑。
希望你觉得它很有用。 :