Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:objecthtmldevelment,获取值?_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery:objecthtmldevelment,获取值?

Javascript jQuery:objecthtmldevelment,获取值?,javascript,jquery,html,Javascript,Jquery,Html,您好,我有一个[Object HtmlDevice],其中包含我想要使用的数据 我正在用这个。例如,this.innerHTML 我的Div结构如下所示: <div class="hour"> <!-- <-- my Object referes to this div --> <div class="time">2000</div> <img class="weather-img" src="image/rain.pn

您好,我有一个[Object HtmlDevice],其中包含我想要使用的数据

我正在用这个。例如,this.innerHTML

我的Div结构如下所示:

<div class="hour"> <!-- <-- my Object referes to this div -->
    <div class="time">2000</div>
    <img class="weather-img" src="image/rain.png">
    <div class="temp">-10</div>
</div>

2000
-10
我想提取时间和温度值,ergo 2000和-10

我一直在阅读文档,但似乎找不到一个圆滑的解决方案,到目前为止,我最好的选择是innerHTML,但感觉应该有一个更简单的方法。有人吗


回答:var time=$(this.find('.time').text()

使用jQuery非常简单:

var time = $('.time', this).text(),
    temp = $('.temp', this).text();
注释中提到的更长一点的方法也很有效,并展示了jQuery中的一些链接方法:

var time = $(this).find('.time').text(),
    temp = $(this).find('.temp').text();
一个mod编辑了我的代码,这可能是不对的,因为如果页面上有多个元素的类为
time
temp
,您可能会得到错误的数据。编辑前的示例显示了如何更好地确定查询的范围:

var time = $('.hour .time').text(),
    temp = $('.hour .temp').text();

jQuery.text:

此代码将使用
yourDiv
作为上下文,以字符串形式获取时间和温度值:

var $div,
    time,
    temp;
$div = $(yourDiv); //save the div as a jQuery collection
                   //(assuming `yourDiv` is the actual DOM node)
time = $div
    .find('.time') //from the div find the .time descendants
    .text();       //get the text from the first .time descendant
temp = $div
    .find('.temp') //from the div find the .temp descendants
    .text();       //get the text from the first .temp descendant
一种更简洁的写作方式是:

var time,
    temp;
time = $('.time', yourDiv).text();
temp = $('.temp', yourDiv).text();
在这两个示例中,我都明确选择了值中是否有任何HTML实体,在您的示例中,这不会产生显著的差异,但似乎您对解析的值而不是原始HTML感兴趣

如果需要将值转换为数字,则需要将字符串值转换为数字:

time = Number(time);
此操作的快捷方式是一元
+
运算符:

time = +time;
最后的代码如下所示:

var time,
    temp;
time = +$('.time', yourDiv).text();
temp = +$('.temp', yourDiv).text();

在使用
time
temp
值之前,请确保检查
NaN

如果不想使用jQuery,请使用本机

其中,
yourDOMobject
引用您的
[Object htmldevelment]


示例:

啊,我不清楚,我用的是“this”。示例:var time=$(this)。$('.time').text();然而,这似乎是失败的@KarlMorrison您的示例几乎具有正确的语法,但需要将其更改为:
var time=$(this.find('.time').text()@NeilKistner似乎返回一个空字符串:/I在使用innerHTML@KarlMorrison请用您目前拥有的JS代码更新您的问题。@NeilKistner抱歉,您是对的,将其发布为并回答,我将其标记为:)我得到错误:未捕获类型错误:对象[Object global]当我向我得到的“this”发出警报时,没有“getElementsByCassName”方法:[Object HtmlDevice]@KarlMorrison,不要使用
警报
,使用
控制台.log
控制台.dir
。您将在开发人员控制台中获得更好的调试信息。@zzzzBov我很清楚警报是最坏的情况,但是我使用括号来重新设置它是一件麻烦的事情,因为它有bug(即实时预览)。因此在我的情况下没有F12@卡尔莫里森补充了一个例子
var time = yourDOMobject.getElementsByClassName("time")[0].innerHTML;