jquery - 我使用 jquery 无法获取 html p 元素文本
问题描述
以下是我页面上的 html,如果价格存在,我想获取商品价格。
<ol id="ordered">
<li class="itemnew">
<span>#1</span>
<p class="price">$22.99</p>
</li>
<li class="itemnew">
<span>#2</span>
<p>no price</p>
</li>
<li class="itemnew">
<span>#3</span>
<p class="price">$13.19</p>
</li>
<li class="itemnew">
<span>#4</span>
<p>no price</p>
</li>
<li class="itemnew">
<span>#5</span>
<p class="price">$22.79</p>
</li>
</ol>
我想要的结果如下:
1
22.99 美元
2
没有价格
3
13.19 美元
4
没有价格
5
22.79 美元
我的代码在这里,但不能工作。
var numli = $('ol#ordered li');
var rank=[];
var price=[];
for(var i=0;i<numli.length;i++){
rank[i]=$(numli[i])has( "span" ).text();
if($(numli[i]).has( "<p class="price">" )) {price[i]=$(numli[i]).has( "<p class="price">" ).text();}
else{price[i]='no price';}
}
解决方案
根据评论中的讨论,更新为在不更改 HTML 结构的情况下工作,只需针对<p>
标签而不是.price
类:
function getPrices(){
var priceString = '';
Array.from(document.getElementsByClassName('itemnew')).map(function(item, index) {
priceString += index + '' + item.getElementsByTagName('p')[0].innerHTML;
});
return priceString;
};
var prices = getPrices();
console.log(prices);
不能说 Jquery 代码,但这个 vanilla JS 会做的事情:
1.将所有价格元素归类为.price
,无论其内容如何。
<ol id="ordered">
<li class="itemnew">
<span>#1</span>
<p class="price">$22.99</p>
</li>
<li class="itemnew">
<span>#2</span>
<p class="price">no price</p>
</li>
<li class="itemnew">
<span>#3</span>
<p class="price">$13.19</p>
</li>
<li class="itemnew">
<span>#4</span>
<p class="price">no price</p>
</li>
<li class="itemnew">
<span>#5</span>
<p class="price">$22.79</p>
</li>
</ol>
2.然后迭代值:
Array.from(document.getElementsByClassName('itemnew')).map(function(item, index) {
console.log(index);
console.log(item.getElementsByClassName('price')[0].innerHTML);
});
3.或者,正如您评论要求将它们全部显示在一个字符串中:
function getPrices(){
var priceString = '';
Array.from(document.getElementsByClassName('itemnew')).map(function(item, index) {
priceString += index + '' + item.getElementsByClassName('price')[0].innerHTML;
});
return priceString;
};
var prices = getPrices();
console.log(prices);
推荐阅读
- python - 调用函数时是否可以跳过一些调用值
- ios - 对成员 'tableView(_:numberOfRowsInSection:)' 的模糊引用
- java - 谷歌地图显示徽标,但未在 Android 模拟器中显示
- jquery - 使用 JSON 的动态引导表/表单
- reactjs - 使用大理石图运行测试时不执行 ajax 请求
- python - 听写列表理解
- angular - 动态表内带有模糊事件的 Angular 6 输入
- c++ - 如何在 C++ 17 中移动字符串的字母?
- java - 在 Google Play 结算购买验证的 OAuth2 授权代码发布请求上获得无效授权
- google-cloud-platform - Google Cloud Platform Windows 虚拟机问题