javascript - 使用 getElementByTagName 检索 b 的值并将其设为整数

标签 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];但当我尝试解析它或使用正则表达式替换它时,它不起作用。我正在尝试做的事情的完整示例:

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> 。我怎么不能用它工作呢?

最佳答案

有两个问题:

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

关于javascript - 使用 getElementByTagName 检索 b 的值并将其设为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31292868/

相关文章:

javascript - 我无缘无故地在 JSLint 中遇到了两个错误

javascript - 实例创建(JS)

php - 我需要从任意 html 字符串中快速删除一组类

regex - 如何将 "ip"字符串 grep 到文件中?

python - 如何在一个正则表达式中捕获所有正则表达式组?

javascript - JS定时器和mysql不同步

javascript - 数据表扩展 excel 选项不适用于分页

javascript - Safari 中我的音频循环总是有间隙

python - Django 的 html 模板替代品是什么?

html - 位置固定重叠问题?