Javascript jQuery:objecthtmldevelment,获取值?
您好,我有一个[Object HtmlDevice],其中包含我想要使用的数据 我正在用这个。例如,this.innerHTML 我的Div结构如下所示: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
<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;