【问题标题】:JavaScript "this" not working for HTML elementJavaScript“this”不适用于 HTML 元素
【发布时间】:2019-06-28 21:04:42
【问题描述】:

我想用img 元素在div 中显示信息,我通过php 访问数据库。我将onmouseover event 与每个元素相关联,并将this 和一些参数作为参数传递,但是当我将鼠标悬停在图像上时,div 显示在浏览器的左上角并且不显示在图像旁边。

我也尝试过删除this,结果还是一样。

图像元素的代码

         $row = mysqli_fetch_array($result);

          $firstname = $row['firstname'];

          $lastname = $row['lastname'];

          $image =    $row['image'];

          $phone =    $row['phone'];

          $email =    $row['email'];

     $realtorData = $firstname.'|'.$lastname.'|'.$phone.'|'.$email.'|';
echo "<img src='/../../Realtors/$image'onmouseover='showRealtorInfo(this,\"".$realtorData."\" );' onmouseout='hideRealtorInfo();'>";

javaScript 代码

  function showRealtorInfo(element, realtorInfo)
{
    var realtorArray = realtorInfo.split('|');

    var firstname = realtorArray[0];
    var lastname  = realtorArray[1];
    var phone     = realtorArray[2];
    var email     = realtorArray[3];

    var realtorInfoDiv = document.getElementById('realtorinfo');

    var myHTML  = "<p><b>" + firstname + " " + lastname + "</b><br /><br />";
        myHTML += "Phone: " + phone + "<br />";
        myHTML += "Email: " + email + "<br />";

    realtorInfoDiv.innerHTML = myHTML;

    x = element.offsetLeft;
    y = element.offsetTop;

    //alert(x);

    realtorInfoDiv.style.left = y + 100;
    realtorInfoDiv.style.top = x + 550;



    realtorInfoDiv.style.visibility = 'visible';


}

div元素的css代码

#realtorinfo{

position: absolute;
left: 10px;
top: 10px;
width: 200px;
height: 150px;
padding: 5px;
background-color: yellow;
visibility: hidden;
float: left;

} 

【问题讨论】:

  • 这可能是因为 position: absolute 在 css 中。
  • 我在问题中看不到this
  • 我已经尝试过删除 absolute 结果没有改变。
  • this 已作为参数传递给函数 showRealtorInfo(this,\"".$realtorData."\" );
  • 发布页面获取的实际 HTML,而不是生成它的 PHP。请一次一期。

标签: javascript php html css mysql


【解决方案1】:

您在后续 LOC 中没有提到“px”。

realtorInfoDiv.style.left = y + 100;
realtorInfoDiv.style.top = x + 550;

这应该可行:

realtorInfoDiv.style.left = y + 100 + "px";
realtorInfoDiv.style.top = x + 550 + "px";

【讨论】:

  • 真棒它正在工作,但实际上它在 x 方向而不是 y 方向移动
  • 哇,谢谢它成功了,我通过重写 realtorInfoDiv.style.top = y + 100 + "px"; realtorInfoDiv.style.left = x + 550 + "px";
  • 请告诉我为什么需要“px”。我在其他代码中是相同的代码,但它在没有“px”的情况下工作,但在这段代码中它不起作用。
  • 样式属性使用 CSS 语法,因此您必须使用像 12px3ch 这样的值才能使它们起作用。您可能已经在其他 JavaScript 属性中看到过纯数字,例如 scrollHeight,它们不是 CSS 样式的一部分,而是隐含在像素中。
猜你喜欢
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多