如何将这个div文本读成三个独立的变量

时间:2015-10-20 13:01:03

标签: jquery

我正在网站上进行数据报废(经过他们的许可)

所以当我这样做时,我得到以下div作为来自ajax调用的响应

<div class="tickerdata">
   8250.00 
   <span class="down"><img src="redarrow.jpg" alt="Down">&nbsp;6.50</span>
   <span class="down"><img src="redarrow.jpg" alt="Down">&nbsp;0.08%</span>
</div>

我想将所有数字读入

变量

8250.00,6.50和0.08%分为3个不同的变量。

我试过

$( document ).ready(function() {
    var tickerdatalive = $('.tickerdata').text(); 
    var current_price = tickerdatalive[0];
    var change_points = tickerdatalive[1];
    var change_percent = tickerdatalive[2];
});

这是我的小提琴

http://jsfiddle.net/p2ww0nef/

请告诉我如何将值读入变量?

5 个答案:

答案 0 :(得分:1)

我首先规范化空格,然后在单个空格上分割字符串:

    $(document).ready(function () {

        var tickerdatalive = $('.tickerdata').text();

        var arr = tickerdatalive.replace(/\s\s+/g, ' ').split(' ')

        var current_price = arr[0];
        var change_points = arr[1];
        var change_percent = arr[2];

    });

看你的小提琴:http://jsfiddle.net/p2ww0nef/4/

当然,在为变量赋值之前,您可能需要检查数组长度。

答案 1 :(得分:1)

尝试使用以下代码段。

    <div class="tickerdata">
        8250.00 
   <span class="down">
       <img src="redarrow.jpg" alt="Down" />&nbsp;6.50</span>
        <span class="down">
            <img src="redarrow.jpg" alt="Down" />&nbsp;0.08%</span>
    </div>
    <script>
        $(document).ready(function () {
            var tickerdatalive = $('.tickerdata').text();
            var test =  tickerdatalive.replace(/\s\s+/g, ' ').split(' ').filter(function (v) { return v !== '' })
            var current_price = test[0];
            var change_points = test[1];
            var change_percent = test[2];
        });
    </script>

DEMO

答案 2 :(得分:1)

一种方法是分离孩子,这样你就可以在dom之外阅读他们的文字,而主要容器中剩下的唯一东西就是价格文本

$('.tickerdata').each(function(){

    var $spans = $(this).children().detach();
    // children are gone so all that is left is text node
    var current_price = $(this).text().trim();   

    var change_points = $spans.first().text().trim();
    var change_percent =$spans.last().text().trim();

   console.log([current_price,change_points,change_percent]);
});

DEMO

答案 3 :(得分:0)

使用.contents()代替.text()

$(function() {
    var tickerdatalive = $('.tickerdata').contents(); 
    var current_price = tickerdatalive[0];
    var change_points = tickerdatalive[1];
    var change_percent = tickerdatalive[2];
});

https://api.jquery.com/contents/

  

获取匹配元素集中每个元素的子元素,包括文本和注释节点。

更新了fidddle

答案 4 :(得分:0)

你可以修剪文本并用空格分割。

var tickerdatalive = $('.tickerdata').text().trim().split(/\s+/g);

tickerdatalive将是文本节点数组。