JS实现悬停单元格显示图片

  • 文档创建者:伊丽利亚
  • 编辑次数:5次
  • 最近更新:RosieY 于 2021-01-25
  • 1. 概述

    1.1 预期效果

    鼠标悬停在表格某一列中任意单元格上,便会显示设置好的图片,鼠标离开该单元格,图片消失。如下图所示:

    88.gif


    1.2 实现思路

    引用 CSS 磁盘文件和 JavaScript 磁盘文件,在一个 Tooltip 功能里面(浮动提示框效果)放置当前单元格要显示的图片,实现悬停单元格便显示图片的效果。

    2. 示例

    2.1 准备模板

    1)准备内置模板: %FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\DynamicCol\函数实现动态列.cpt 

    点击可下载模板:函数实现动态列.cpt

    打开模板,模板样式如下图所示,该模板中使用的公式可参考 :使用函数实现动态列

    image.png

    2)删除 A1 单元格所在的空白行,然后在参数面板中选中「下拉复选框」,输入控件值,公式为TABLEDATAFIELDS("ds1")。如下图所示:

    1571369643318556.png

    2.2 引用文件

    点击模板>模板Web属性,在「引用 Css」文件和「引用JavaScript」文件 Tab 页下,分别引用 bootstramp 的 js 和 css 文件。如下图所示:

    引用文件本地路径
    bootstrap.min.css%FR_HOME%\webapps\webroot\scripts\css\lib\bootstrap.min
    bootstrap.min.js%FR_HOME%\webapps\webroot\scripts\js\lib\bootstrap.min

    1571377549475288.png

    2.3 添加事件

    点击模板>模板Web属性>分页预览设置,在事件设置中添加「加载结束」事件,如下图所示:

    15.png

    JavaScript 代码如下:

    //假设在E列做悬停显示图片,图片的地址是固定url+xxx.jpg。
    $(".x-table td[id^=E]").tooltip({
    placement: "right",
    html: true,
    title: function() {
    var goodsno = $(this).html();//获取当前单据元的值
    return '<img width=180 height=250 src="https://help.finereport.com/view/help2017/images/xiaofan.png" />';
    //若图片地址是固定地址url+xxx.png/.jpg
    //return '<img width=180 height=250 src="https://help.finereport.com/view/help2017/images/'+goodsno +'.png" />';
    }
    });

    //如果需要按照参数显示图片 需要删除html格式  如果引用 css样式表 ,参数栏显示会有问题。

    var src1 = goodsno.replace(/<\/?.+?>/g, "").replace(/ /g, "").replace(/\s+/g, ""); //剔除格式,保留数值

    return '<img width=280 height=250 src="../../help/picture/' + src1 + '.jpg"/ >';

    2.4 效果预览

    保存模板,点击分页预览,效果如下图所示:

    88.gif

    注:不支持移动端。

    3.模板下载

    已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\DynamicCol\悬停单元格显示图片.cpt

    点击下载模板:悬停单元格显示图片.cpt

    附件列表


    主题: 二次开发
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-127-81526