Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加Javascript以替换Span标记_Javascript_Jquery_Html - Fatal编程技术网

添加Javascript以替换Span标记

添加Javascript以替换Span标记,javascript,jquery,html,Javascript,Jquery,Html,我有一个在线商店,它的访问权限有限,无法对代码进行任何正确的编辑 我正在尝试实施适当的价格模式,因为他们有: <span itemprop="price">$57.00</span> 57.00美元 这是不正确的 它需要这样设置 <span itemprop="priceCurrency" content="USD">$</span> <span itemprop="price">57.00</span> $ 57

我有一个在线商店,它的访问权限有限,无法对代码进行任何正确的编辑

我正在尝试实施适当的价格模式,因为他们有:

<span itemprop="price">$57.00</span> 
57.00美元
这是不正确的

它需要这样设置

<span itemprop="priceCurrency" content="USD">$</span> 
<span itemprop="price">57.00</span>
$
57
JavaScript或jQuery中是否有东西可以通过分离货币符号和价格来处理这一点


谢谢

您将获得元素文本:

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  });

您将获得元素文本:

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  });

沿袭

// 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);
});
你应该做你想做的事


请参见演示:(更新以使效果更明显)

// 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);
});
你应该做你想做的事


请参见:(更新以使效果更加明显)

这里有一个建议,说明如何实现这一点,但我不建议这样做(对于
content=”“
,案例太多)

您可以用来将错误格式转换为正确格式的逻辑


希望您觉得它有用。:]

这里有一个建议,告诉你如何做到这一点,但我不建议你这样做(对于
content=“”
,案例太多了)

您可以用来将错误格式转换为正确格式的逻辑


希望您觉得它有用。:]

可能不是100%没有bug,但它应该让您开始:

<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>

var n=document.getElementsByTagName(“*”)

for(var i=0;i可能不是100%没有bug,但它应该让您开始:

<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>

var n=document.getElementsByTagName(“*”)
对于(VarI=0;i这应该行得通——querySelectorAll应该快一点,我相信正则表达式将不仅仅适用于美元

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]);
  }
}
函数fixItemPropSpan(){
var n=document.querySelectorAll(“[itemprop]”);
对于(变量i=0;i
这应该行得通——querySelectorAll应该快一点,我相信正则表达式将不仅仅适用于美元

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]);
  }
}
函数fixItemPropSpan(){
var n=document.querySelectorAll(“[itemprop]”);
对于(变量i=0;i
是的,在浏览器中操纵DOM节点是JavaScript的主要目的。你被困在哪里了?我认为JS对你的情况没有帮助。时间会很晚,因为DOMWell中最初没有价格货币。是的,操纵DOM节点是浏览器中JavaScript的主要目的。你被困在哪里了?我认为JS对您的情况没有帮助。由于DOMPerseFloat中最初没有pricecurrency,因此将延迟。parseFloat将在“$”字符上失败:parseFloat将在“$”字符上失败: