Javascript 如何在动态更改标题标记后使其显示
我正在更改跨距的标题标记,以显示它链接到的差异消息的第一行。除了mousover上显示的消息外,一切都很正常,因此只有当用户将鼠标移到span标记上时,“神奇”才会发生。问题是,只有在触发事件的初始鼠标悬停后再次移动鼠标时,标题才会显示。有办法解决这个问题吗?是否可以将标题设置为调用JavaScript函数而不是在mouseover上调用它Javascript 如何在动态更改标题标记后使其显示,javascript,Javascript,我正在更改跨距的标题标记,以显示它链接到的差异消息的第一行。除了mousover上显示的消息外,一切都很正常,因此只有当用户将鼠标移到span标记上时,“神奇”才会发生。问题是,只有在触发事件的初始鼠标悬停后再次移动鼠标时,标题才会显示。有办法解决这个问题吗?是否可以将标题设置为调用JavaScript函数而不是在mouseover上调用它 echo '<td valign="top" align="center">'.(($job['numberOfUnreadMessages']
echo '<td valign="top" align="center">'.(($job['numberOfUnreadMessages'] > 0) ? ' <span class="badge1" id="' . $job['id'] . '" data-badge="'.$job['numberOfUnreadMessages'].'" onmouseover="showMessage(' . $job['id'] . ', ' . $job['numberOfUnreadMessages'] . ');"></div>' : ' ' );
echo''。($job['numberOfUnreadMessages']>0)?“”:“”;
下面是JavaScript:
function showMessage(jobid, numOfUnreadMessages) {
let request = new XMLHttpRequest();
let jid = jobid;
request.open('GET', '<?php echo site_url('job/getDiscrepancyByJobId'); ?>/' + jobid, true);
request.onload = function() {
if (this.status >= 200 && this.status < 400) {
if ((this.response).contains('<div')) {
document.getElementById(jid).title = numOfUnreadMessages + ' number of unresolved discrepancies.';
} else {
let message = decodeURIComponent(this.response);
document.getElementById(jid).title = message;
document.getElementById(jid).focus();
}
} else {
// Error
}
};
request.send();
}
函数showMessage(jobid,numOfUnreadMessages){
let request=new XMLHttpRequest();
让jid=jobid;
open('GET','/'+jobid,true);
request.onload=函数(){
如果(this.status>=200&&this.status<400){
if((this.response).contains(“感谢O4FS的帮助
我向拉入页面的数组中添加了一个字段,该字段会带来差异消息。然后我简单地将PHP代码更改为:
echo '<td valign="top" align="center">'.(($job['numberOfUnreadMessages'] > 0) ? ' <span class="badge1" id="' . $job['id'] . '" data-badge="'.$job['numberOfUnreadMessages'].'" title="' . $job['titleMessage'] . '"></div>' : ' ' );
echo''。($job['numberOfUnreadMessages']>0)?“”:“”;
为什么必须“动态”执行此操作,并等待用户将鼠标悬停在元素上?为什么标题没有设置为应该立即显示?@04FS,如果用户将鼠标悬停在span标记上(在小圆圈中显示为数字),则标题只应显示消息的第一行。不过,你提出了一个很好的观点。我会尝试重新思考这一点。在每次鼠标悬停事件上发出AJAX请求并不是一个好主意。如果没有任何节流或去抖动,这根本就不应该做,IMHO。我宁愿定期轮询新消息(或者首先使用服务器端事件/WebSocket)-这在很大程度上也可以解决您最初的问题。