Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在动态更改标题标记后使其显示_Javascript - Fatal编程技术网

Javascript 如何在动态更改标题标记后使其显示

Javascript 如何在动态更改标题标记后使其显示,javascript,Javascript,我正在更改跨距的标题标记,以显示它链接到的差异消息的第一行。除了mousover上显示的消息外,一切都很正常,因此只有当用户将鼠标移到span标记上时,“神奇”才会发生。问题是,只有在触发事件的初始鼠标悬停后再次移动鼠标时,标题才会显示。有办法解决这个问题吗?是否可以将标题设置为调用JavaScript函数而不是在mouseover上调用它 echo '<td valign="top" align="center">'.(($job['numberOfUnreadMessages']

我正在更改跨距的标题标记,以显示它链接到的差异消息的第一行。除了mousover上显示的消息外,一切都很正常,因此只有当用户将鼠标移到span标记上时,“神奇”才会发生。问题是,只有在触发事件的初始鼠标悬停后再次移动鼠标时,标题才会显示。有办法解决这个问题吗?是否可以将标题设置为调用JavaScript函数而不是在mouseover上调用它

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>' : '&nbsp;' );
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>' : '&nbsp;' );
echo''。($job['numberOfUnreadMessages']>0)?“”:“”;

为什么必须“动态”执行此操作,并等待用户将鼠标悬停在元素上?为什么标题没有设置为应该立即显示?@04FS,如果用户将鼠标悬停在span标记上(在小圆圈中显示为数字),则标题只应显示消息的第一行。不过,你提出了一个很好的观点。我会尝试重新思考这一点。在每次鼠标悬停事件上发出AJAX请求并不是一个好主意。如果没有任何节流或去抖动,这根本就不应该做,IMHO。我宁愿定期轮询新消息(或者首先使用服务器端事件/WebSocket)-这在很大程度上也可以解决您最初的问题。