从下面的字符串中,我需要动态更改的“ 6.903”数字来进行计算。

是否有一些正则表达式或一些jQuery技巧可以轻松或优雅地做到这一点?

<a href="javascript:void(0)" class="" id="buddyTrigger">
38.760&nbsp;<img border="0" align="absmiddle" alt="Arany" src="/img/symbols/res2.gif">
&nbsp;&nbsp;5&nbsp;<img border="0" align="absmiddle" alt="Pokolkristály" src="/img/symbols/res3.gif">
&nbsp;&nbsp;220&nbsp;<img border="0" align="absmiddle" alt="Szilánk" src="/img/symbols/res_splinters.png">
&nbsp;&nbsp;91&nbsp;/&nbsp;125&nbsp;<img border="0" align="absmiddle" alt="Akciópont" src="/img/symbols/ap.gif">
&nbsp;&nbsp;6.903&nbsp;/&nbsp;82.100&nbsp;<img border="0" align="absmiddle" alt="Életerő" src="/img/symbols/herz.png">
&nbsp;&nbsp;<img border="0" align="absmiddle" alt="Szint" src="/img/symbols/level.gif">&nbsp;41    &nbsp;&nbsp;
<img border="0" align="absmiddle" alt="Harci érték" src="/img/symbols/fightvalue.gif">&nbsp;878</a>




这是我的宽松解决方案代码,我可以简化一下吗?

<script type="text/javascript">
    var dataIn=$('#infobar div.gold').html();
    var dataPrep2Split=dataIn.replace(/<img(.*)>/g,';');
    var dataSplit=dataPrep2Split.split(';');
    var myData2Int=parseInt(dataSplit[18].replace('.',''));
    if(myData2Int<=10000) {
        $('#player').find('button.btn').remove();
        var putBack=dataIn.replace(dataSplit[18],'<span class="newmessage">'+dataSplit[18]+'</span>');
        $('#infobar div.gold').html(putBack);
    }
</script>

最佳答案

使用DOM方法;使用.html()替换内容通常会破坏页面功能。同样,该正则表达式可能会以最小的更改被破坏。

您正在尝试抓住人生价值吗?并以<img>alt="Életero"结尾。

因此该文本节点为(基于Q代码):

var lifeValTxtNd    = $("#buddyTrigger img[alt='Életero']")[0].previousSibling;



这从6903之类的内容中获取6.903 / 82.100

var lifeVal         = $.trim (lifeValTxtNd.nodeValue)
                    .replace (/^\s*(\d*)\.?(\d+)\s*\/.+$/, "$1$2")
                    ;
lifeVal             = parseInt (lifeVal, 10);



然后将该部分包装成跨度,请使用:

$("#buddyTrigger img[alt='Életero']").before (
    '<span class="newmessage">' + lifeValTxtNd.nodeValue + '</span>'
);

lifeValTxtNd.parentNode.removeChild (lifeValTxtNd);






这样做:


不会中断页面​​上的任何事件侦听器。
不太容易受到页面布局/内容更改的影响。
更容易理解和维护。
如果性能是一个因素,它将运行得更快。

08-27 01:38