【问题标题】:On Mouse Over Not Showing Image鼠标悬停不显示图像
【发布时间】:2019-12-27 23:41:31
【问题描述】:

以下代码仅执行颜色更改。我从来没有看到图像。

我在 Visual Studio 2017 的 C# ASP.Net 中编写此代码

基本上尝试了此代码的变体。

 <asp:LinkButton ID="LinkButton1" Font-Underline="true" runat="server" 
 OnMouseOver="mouseOver();" OnMouseOut="mouseOut();">Facility 
 ID</asp:LinkButton> 
 <img src="../Images/invoice.PNG" id="image1" alt="Image Not Found" 
 width="1000" height="500" style="display:none;" runat="server" /> 


 <script src="https://code.jquery.com/jquery-2.2.3.min.js"></script>

 <script>
 document.getElementById("LinkButton1").onmouseover = function() 
 {mouseOver()};
 document.getElementById("LinkButton1").onmouseout = function() 
 {mouseOut()};

 function mouseOver() {
 document.getElementById("LinkButton1").style.color = "red";
 document.getElementById("LinkButton1").style.display="inline";
 document.getElementById("LinkButton1").src = '../Images/invoice.PNG';
 }

 function mouseOut() {
 document.getElementById("LinkButton1").style.color = "black";
 }
 </script>

我希望看到图像显示为标注或弹出窗口。文字变为红色,页面只显示 javascript:__doPostBack('LinkBut​​ton1','')

【问题讨论】:

  • 当您说您看到颜色变化时,它是否同时变为红色和黑色?还是url的src正在更新,没有显示图片或者src值没有更新?
  • 是的,鼠标悬停时颜色变为红色,鼠标移出时变为黑色。不确定正在更新的网址是什么意思。该 url 是或应该是对 Images 文件夹的静态引用。

标签: javascript c# asp.net onmouseover asplinkbutton


【解决方案1】:

我想我可能会看到您的问题。 在这条线上

document.getElementById("LinkButton1").src = '../Images/invoice.PNG';

您似乎正在尝试更新按钮的 src 而不是图像。

尝试更新您的代码以使用这样的 img 标签的 id

document.getElementById("image1").src = '../Images/invoice.PNG';

EDIT1 好的,我现在添加,所以当您将鼠标悬停在按钮上时,图像可用,而当您将鼠标移出时,图像就会消失。我正在使用 css 可见性属性执行此操作。默认情况下,我们使用样式属性在元素上将图像设置为隐藏。当您将鼠标悬停在按钮上时,我们将可见属性设置为可见,当您将鼠标移出时,我们将其设置回隐藏。

这是执行此操作的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <button id="button1">Button</button>
    <img id="image1" src="https://assets.pokemon.com/assets/cms2/img/pokedex/full/025.png" style="visibility: hidden;"></img>
</body>
<script>
    function mouseOver(){
        document.getElementById('button1').style.color = "green";
        document.getElementById('button1').style.display = "inline";
        document.getElementById('image1').style.visibility = "visible";
    }
    function mouseOut(){
        document.getElementById('button1').style.color = "red";
        document.getElementById('image1').style.visibility = "hidden";
    }
    document.getElementById('button1').onmouseover = mouseOver;
    document.getElementById('button1').onmouseout = mouseOut;
</script>
</html>

我还用新代码更新了 gitub 示例并将其放入文件标题 index2.html 中,您可以查看 here。

【讨论】:

  • 我创建了一个示例存储库来模仿您的代码并提供解决方案。让我知道它是否适合您或是否仍有问题。 github.com/fk1018/so/tree/master/57612879
  • 我可以让您的代码正常工作,但我的目标是在有人将鼠标悬停在链接按钮上时显示图像。
  • 很酷,您希望图像成为按钮的背景,还是希望图像在鼠标悬停时可见。您还希望用户鼠标离开时图像仍然可见吗?
  • 仅在鼠标悬停时可见。
  • 非常感谢@crystalnoob 的澄清。我已经更新了上面的答案,现在我想相应地隐藏和显示图像。如果这仍然不是您想要的,请告诉我。
【解决方案2】:

一个链接按钮,它只是 html 中的一个锚点,它没有 src 属性。它不是图像。使用背景图片。

document.getElementById("LinkButton1").style.backgroundImage = "url('image.png')";

或将其更改为 ImageButton 控件,变为 &lt;input type="image"

【讨论】:

  • 能否详细介绍一下imagebutton控件。我还用这个功能吗?
【解决方案3】:

非常感谢大家。在您的建议和一些修补之间,我能够让代码按预期工作。

这是最终代码。当我将鼠标悬停在链接按钮上时,图像显示在按钮下方,当我鼠标移出时消失。

<asp:LinkButton ID="LinkButton1" Font-Underline="true" runat="server" 
OnMouseOver="mouseOver();" OnMouseOut="mouseOut();">Facility ID</asp:LinkButton>

function mouseOver() {

document.getElementById("image1").style.display = "inline";
document.getElementById("image1").style.backgroundimage = "input type=image";
}

function mouseOut()
{

document.getElementById("image1").style.display="none";
}

【讨论】:

    【解决方案4】:
          <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
            <script type="text/javascript" src="http://cdn.rawgit.com/elevateweb/elevatezoom/master/jquery.elevateZoom-3.0.8.min.js"></script>
            <script type="text/javascript">
                $(function () {
                    $("[id*=GrdEmplistAtt] img").elevateZoom({
                        cursor: 'pointer',
                        imageCrossfade: true,
                        loadingIcon: 'loading.gif'
                    });
                });
            </script>
    
    <asp:TemplateField HeaderText="View Files" ItemStyle-HorizontalAlign="Center" ItemStyle-Width="300px"
                                                                                            HeaderStyle-HorizontalAlign="Center">
                                                                                            <ItemTemplate>
    
                                                                                                <asp:Label ID="lblGrdDocFileName" runat="server" Text='<%#Bind("DocFileName") %>' CssClass="form-label" Visible="false"></asp:Label>
                                                                                                <table cellspacing="0" style="width: 100%">
                                                                                                    <tr>
                                                                                                        <td style="width: 25%">
                                                                                                            <asp:Image ID="Image1" runat="server" Height="30px" Width="30px" ImageAlign="Middle" Visible="false" />
                                                                                                        </td>
                                                                                                        <td style="width: 25%">
                                                                                                            <asp:Image ID="Image2" runat="server" Height="30px" Width="30px" Visible="false" ImageAlign="Middle" />
                                                                                                        </td>
                                                                                                        <td style="width: 25%">
                                                                                                            <asp:Image ID="Image3" runat="server" Height="30px" Width="30px" Visible="false" ImageAlign="Middle" />
                                                                                                        </td>
                                                                                                        <td style="width: 25%">
                                                                                                            <asp:Image ID="Image4" runat="server" Height="30px" Width="30px" Visible="false" ImageAlign="Middle" />
                                                                                                        </td>
                                                                                                    </tr>
                                                                                                </table>
                                                                                            </ItemTemplate>
                                                                                            <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                                                                                            <ItemStyle HorizontalAlign="Center" Width="250"></ItemStyle>
                                                                                        </asp:TemplateField>
    

    https://www.aspforums.net/Threads/541191/Display-GridView-image-in-Modal-Popup-on-MouseOver-using-jQuery-in-ASPNet/也可以点击此链接

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    相关资源
    最近更新 更多