我想显示有关变量状态的不同HTML元素。
在我的HTML文件中,我有:
<div id="dustbinstatus"></div>
在我的JS文件中,我有:
if (message.payloadString == "full"){
$('#dustbinstatus').append('<i class="material-icons">delete</i>');
}
else if (message.payloadString == "empty"){
$('#dustbinstatus').append('<p> Dustbin ok </p>');
}
message.payloadString变量可以使用websockets动态更改。 通过这个例子,它可以工作,但只是每次状态改变时都会添加一个新行,我想要替换一行并根据状态进行更改。
有办法吗?
谢谢!
奥利维亚
答案 0 :(得分:2)
如果你想替换DOM元素的内容,你必须使用jQuery的.html()
函数(类似于JS的innerHtml)看起来像:
$('#dustbinstatus').html('<p> Dustbin ok </p>');
答案 1 :(得分:1)
使用html()
代替append()
附加用于在现有结尾附加Dom element
。
第一名:您可以使用html()
$('#dustbinstatus').html('<p> Dustbin ok </p>');
第二名:您也可以使用empty()
$('#dustbinstatus').empty().append('<p> Dustbin ok </p>');
答案 2 :(得分:1)
使用.append
更改.html
功能。
Append
只是自我解释,它会附加到它包含的内容,
Html
将替换所选元素中的整个html部分。
答案 3 :(得分:0)
您应该在添加新行之前删除之前创建的行。像这样:
$('#dustbinstatus').empty();
if (message.payloadString == "full"){
$('#dustbinstatus').append('<i class="material-icons">delete</i>');
}
else if (message.payloadString == "empty"){
$('#dustbinstatus').append('<p> Dustbin ok </p>');
}
答案 4 :(得分:0)
$('#dustbinstatus').html('');//blank existing dom before append
if (message.payloadString == "full"){
$('#dustbinstatus').append('<i class="material-icons">delete</i>');
} else if (message.payloadString == "empty"){
$('#dustbinstatus').append('<p> Dustbin ok </p>');
}
答案 5 :(得分:0)
问题是你要附加元素,所以它会在最后追加元素,因此每次都会得到一个新行。
您可以通过以下两种方式实现:
var message = "full";
if (message == "full"){
$('.material-icons').attr('class', 'active');
$('#dustbinstatus p').attr('class', 'notactive');
}
else if (message == "empty"){
$('#dustbinstatus p').attr('class', 'active');
$('.material-icons').attr('class', 'notactive');
}
.active{
display:block;
}
.notactive{
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="dustbinstatus">
<i class="material-icons">delete</i>
<p> Dustbin ok </p>
</div>
$(#dustbinstatus).html()
。