使用getElementByTagName检索b的值并使其成为整数

时间:2015-07-08 12:35:16

标签: javascript html regex google-tag-manager

首先,我是JavaScript新手。我一直拉着头发上班。我尝试了很多不同的方法,但我无法让它发挥作用。我想要做的是使用JavaScript从HTML文档中提取值,并保存以下值:<div class="sum">Sum of order: <b>530 SEK</b></div>。我想要获取的是整数, 530 ,并删除其他所有内容。

HTML:

<div class="order">
        <div id="departDate">
        <div><b>Departing:</b></div>
        <div>2015-08-08</div>
    </div>

        <div id="returnDate">
            <div><b>Returning:</b></div>
            <div>2015-08-16</div>
        </div>

        <div><b>Tickets</b></div>

        <table>
            <tbody><tr>
            <td class="first">Adult(s)</td>
            <td>1 x</td>
            <td>530 SEK</td>
            </tr>
            <tr class="noborder">
        <td colspan="3">
        <table>
        <tbody><tr>
        <td id="people102" class="query first" style="font-size: 11px;">Test Testsson</td>
        <td id="info102" class="query text-red" style="font-size: 11px;"></td>
        </tr>
        </tbody></table>
        </td>
        </tr>

        <tr>
            <td class="first">Children:</td>
            <td>3 x</td>
            <td>0 SEK</td>
        </tr>
        <tr class="noborder">
            <td colspan="3">
        <table>
        <tbody><tr>
            <td id="people9999" class="query first" style="font-size: 11px;"></td>
            <td id="info9999" class="query text-red" style="font-size: 11px;"></td>
        </tr>
        </tbody></table>
        </td>
        </tr>
        </tbody></table>
        <div class="sum">Sum of order: <b>530 SEK</b></div>
        <div class="vat">VAT 6%: 30 SEK</div>
</div>

我一直想要尝试做的是通过<b>获取document.getElementsByTagName("b")[3];值,但是当我尝试解析它或使用regexp替换它时它只是不起作用。我想要做的一个完整的例子:

function my(){ 
var b = document.getElementsByTagName("b")[3]; 
var str = b.toString().replace(/[^0-9]/g, ''); 
var x = str.parseInt(); 
return x } 
my();

这表示str.parseInt不是函数。如果我用以下内容删除该部分:

function my(){ 
var b = document.getElementsByTagName("b")[3]; 
var str = b.toString().replace(/[^0-9]/g, ''); 
//var x = str.parseInt(); 
return str } 
my();

它返回[object HTMLElement]。我应该如何继续检索该值,从除数字之外的所有内容中删除它并将其替换为空,然后返回其值?阅读其他检索字符串并将其作为整数提取的帖子是让我尝试这些事情的原因。我知道我想做什么,而不是完成它的技术专长。

如果我这样做

var b = document.getElementsByTagName("b")[3];
console.log(b)

我得到<b>530 SEK</b>。为什么我不能用它呢?

2 个答案:

答案 0 :(得分:1)

有两个问题:

  1. 使用dom元素的文本内容
  2. 使用全局parseInt功能

  3. 1。您必须使用dom元素的文本内容:

    var str = b.textContent.replace(/[^0-9]/g, '');
    


    2。 parseInt是一个全局函数,而不是成员函数。

    所以而不是

    var x = str.parseInt(); 
    

    使用

    var x = parseInt(str, 10); 
    

答案 1 :(得分:0)

您可以尝试使用parseInt()ParseFloat()中的一个,取决于您希望在节点的textContent属性上获得的内容:

var b = parseInt(document.getElementsByTagName("b")[3].textContent);
console.log(b)