我试图用段落中的最后一段文字做一些事情,需要将它转换成数组。我知道我可以使用the .contents() method抓住最后一位,然后隔离该对象中的最后一个元素。
但是当我尝试从最后一位创建一个数组时,唯一保留的就是长度!演示:
<p class="orig"><strong>Some bold text</strong> and some other text</p>
<script>
var bits = $('.orig').contents(); // [strong, text]
var lastBit = bits[bits.length - 1]; // " and some other text"
var array = Array.from(lastBit); // [undefined, undefined, . . . undefined]
</script>
我在这里缺少什么?有没有办法在javascript变量或jQuery对象中捕获最后一段文本?谢谢你的帮助!
答案 0 :(得分:0)
您的代码中存在几个问题。
1。 Array.from
方法需要类似数组或可迭代对象。但在你的情况下,它是字符串(可迭代),它会将字符串分解为单个字符,我假设你不需要这种行为。
2。 lastBit
为Node
,您需要获取该节点中可由lastBit.data
检索的数据的文本值。获取字符串值后,您可以使用像''转换为数组的分隔符字符进一步分割。
以下代码应该有效。
var bits = $('.orig').contents();
var lastBit = bits[bits.length - 1];
var array = lastBit.data.split(' ');
console.log(array);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="orig"><strong>Some bold text</strong> and some other text</p>
答案 1 :(得分:0)
lastBit变量不是简单的字符串,而是Text对象。例如,使用import React, {Component} from 'react';
import {connect} from 'react-redux;
import Promise from 'promise';
class MyStatefulComponent extends Component {
constructor(props) {
this.state = {
messages: [] // initialize empty, or with the synchronous rules
};
}
componentWillMount() {
const setState = this.setState;
const rules = this.props.rules; // rules contains a list of either evaluated rules or promises
Promise.all(rules).then(results => {
// this is executed once all the promises in rules have resolved
// setState will trigger a re-render of this component
setState({
messages: [] // construct your array of messages here from the results
});
})
}
render() {
// render your list of messages
return <ul>
{this.state.messages.map(message => <li>{message}</li>)}
</ul>;
}
}
export default connect(
(state, ownProps) => ({
rules: ownProps.rules.map(rule => rule(state))
})
)(MyStatefulComponent);
或lastBit.wholeText
来获取实际的文本字符串。