我有一个div结构如下:
QTableWidgetNAME.blockSignals(True)
item.setForeground(Qt.red)
QTableWidgetNAME.blockSignals(False)
我的jQuery代码如下:
<div id="image0" style="margin-bottom:10px; "></div>
<div id="image1" style="margin-bottom:10px; "></div>
<div id="image2" style="margin-bottom:10px; "></div>
<div id="image3" style="margin-bottom:10px; "></div>
<div id="image4" style="margin-bottom:10px; "></div>
在我的情况下,如果res [0]为“5”,则代码将循环显示5图像,如果res [0]值为“1”,则其1图像。
使用上面的代码,它在开头显示5个图像,但下次仍显示5个图像而不是1.
答案 0 :(得分:1)
for (var j = 0; j < res; j++) {
for (var i = 0; i < res[j]; i++) {
$('#image' + "" + i).html(question.image);
}
}
你必须添加两个这样的循环。
答案 1 :(得分:1)
您正在这样做,每次都会替换div
的内容。
因此,当res[0]
小于div
的总数时,具有较大ID的div
将保持不变。
要解决此问题,首先必须定义这些图像div
的总数,例如,在您的示例中,最多只有5个。
所以:var max = 5;
现在更改您的代码,以便我们清除那些较大的ID:
var max = 5;
var res = question.text.split(imgQues);
var i;
// Clear them out first
for (i = 0; i < max; i++){
jQuery('#image' + "" + i).html('');
}
if (question.image != '') {
for (i = 0; i < res[0]; i++) {
jQuery('#image' + "" + i).html(question.image);
}
}
或者,可能更希望这样做,因此无需跟踪有多少图像div
:
HTML:
<div id="image-container"></div>
CSS:
.my-image {
margin-bottom:10px;
}
JavaScript的:
var imgContainer = jQuery("#image-container");
imgContainer.html(""); // Clear contents
if (question.image != '') {
var res = question.text.split(imgQues);
for(var i = 0; i < res[0]; i++){
var newImage = jQuery("<div class=\"my-image\"></div>");
newImage.html(question.image);
imgContainer.append(newImage);
}
}
答案 2 :(得分:0)
哦,我忘了清除div。它现在正在工作。谢谢。