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

Retrieving value of b with getElementByTagName and making it integer

首先,我是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>

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

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

它returns[object HTMLElement]。我应该如何继续检索值,从除数字以外的所有内容中剥离它并用任何内容替换它然后返回它的值?阅读其他关于检索字符串并将其提取为整数的帖子是让我尝试这些东西的原因。我知道我想做什么,只是不知道完成它的技术专长。

如果我这样做

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

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

有两个问题:

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


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

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


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

所以

var x = str.parseInt(); 

使用

var x = parseInt(str, 10); 

您可以尝试 parseInt()ParseFloat() 之一,具体取决于您希望在节点的 textContent 属性 上获得的文本内容:

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