我有一个HTML标签,我想在运行时更改其文本。我知道我可以使用innerHTML
,但是为什么它只是将我的消息附加到已经设置的标签文本前面。
PHP:
<label for="hp_display" id="addToHP_<?php echo $x; ?>"></label><?php echo $addTo; ?>homepage: </label><input type="checkbox" id="hp_display_<?php echo $x; ?>" <?php echo $check; ?> onclick="addToHome('<?php echo md5($product['product_id']); ?>','<?php echo $add; ?>','<?php echo $x; ?>')" />
JAVASCRIPT:
function addToHome(id,a,n){
$.ajax({
url:'func/addToSlider.php',
type:'POST',
data:{type:a,id:id},
beforeSend: function(){
document.getElementById('addToHP_'+n).innerHTML = '';
document.getElementById('addToHP_'+n).innerHTML = 'Updating';
},
success:function(e){
if(e === '1'){
document.getElementById('addToHP_'+n).innerHTML = '';
if(a === 'remove'){
document.getElementById('addToHP_'+n).innerHTML = 'Add to homepage';
}else{
document.getElementById('addToHP_'+n).innerHTML = 'Remove from homepage';
}
}else{
alert('There has been a server changing your file, please try again');
}
}
});
}
看起来很复杂,但肯定innerHTML
或JQuery的.html('')
应该替换文本而不是附加文本。我可以刷新ajax成功的页面,但我认为更改标签文本更加用户友好。
答案 0 :(得分:2)
您的html标记错误,您有两个结束标签元素
<label for="hp_display" id="addToHP_<?php echo $x; ?>"></label><?php echo $addTo; ?>homepage: </label>
^^^^^^^^ ^^^^^^^
没有所有的php标记就是
<label>X</label>Y</label>
答案 1 :(得分:2)
你有太多</label>
<label for="hp_display" id="addToHP_<?php echo $x; ?>"></label><?php echo $addTo; ?>homepage: </label>
所以当标签看起来像是被追加时,它实际上是第一次被填充。删除第一个</label>
并解决问题。
应该是:
<label for="hp_display" id="addToHP_<?php echo $x; ?>"><?php echo $addTo; ?>homepage: </label>