我有7行,每行都有字符,我想在另一组7行中显示计数。 \
例如对于第一个#actual .list项目,我希望它在#years .list中显示4个字符,对于第二个#actual .list项目,我希望它在#years中显示2个字符。列表部分。
$(function() {
var number = $('#actual .list');
for (i = 0; i < number.length; i++) {
$('#years .list').html(number[i].text().length);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="actual">
<p class="list">Hello</p>
<p class="list">Hey</p>
<p class="list">Hi</p>
<p class="list">Hello</p>
<p class="list">Hey</p>
<p class="list">Hi</p>
<p class="list">Woo</p>
</div>
<div id="years">
<p class="list">#:</p>
<p class="list">#:</p>
<p class="list">#:</p>
<p class="list">#:</p>
<p class="list">#:</p>
<p class="list">#:</p>
<p class="list">#:</p>
</div>
答案 0 :(得分:0)
您正在使用#years div下的列表类将所有元素设置为值,以便每次都覆盖它。
假设#actar下的每个元素的#years下都有一个元素,你可以这样做:
$(function() {
var number = $('#actual .list');
for (i = 0; i < number.length; i++) {
$($('#years .list')[i]).html(number[i].text().length);
}
});
答案 1 :(得分:0)
您的问题并不完全清楚,但您似乎尝试使用第一组中关联的p
中文本的长度填充第二组p
元素
在这种情况下,您有几个问题。首先通过索引访问jQuery对象返回底层Element,因此没有text()
方法。其次,您设置循环中所有html()
元素的.list
而不是当前迭代中的元素。
要修复此问题并改进逻辑,您可以为text()
提供一个函数,该函数将当前元素的索引作为参数,您可以使用该参数来比较第一个和第二个中的p
元素使用eq()
设置,如下所示:
$(function() {
var $list = $('#actual .list');
$('#years .list').text(function(i) {
return $list.eq(i).text().length;
});
});
&#13;
p { margin: 0; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="actual">
<p class="list">Hello</p>
<p class="list">Hey</p>
<p class="list">Hi</p>
<p class="list">Hello</p>
<p class="list">Hey</p>
<p class="list">Hi</p>
<p class="list">Woo</p>
</div>
<div id="years">
<p class="list">#:</p>
<p class="list">#:</p>
<p class="list">#:</p>
<p class="list">#:</p>
<p class="list">#:</p>
<p class="list">#:</p>
<p class="list">#:</p>
</div>
&#13;
答案 2 :(得分:0)
CREATE TABLE parent (id INT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE child (
id INT,
parent_id INT,
PRIMARY KEY (`id`),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE
);
在for循环中,你应该逐个设置$(function() {
var $number = $('#actual .list');
for (var i = 0; i < $number.length; i++) {
var text = $number.eq(i).text();
$('#years .list').eq(i).html(text.length);
}
});
的HTML,否则它们将永远是for循环中的最后一个。
我更喜欢使用#years .list
来获取jQuery元素,然后调用.eq()
(或.html()
)函数来设置内容。
为了最佳实践,
.text()
添加到变量名称以表明它是jQuery元素($
)$number
应使用i
初始化,以用于本地范围