【问题标题】:How do I add links to images in this javascript?如何在此 javascript 中添加指向图像的链接?
【发布时间】:2012-07-12 16:46:59
【问题描述】:

我需要帮助。如何在下面的代码中添加指向图像的链接。这是一个脚本,允许访问者单击表单中下拉菜单上的选项,每个选项都会更改呈现的图像。我正在尝试为每个图像添加一个链接,允许访问者将鼠标悬停在图像上并打开一个更大的图像。

我只需要知道在哪里添加链接。每次我在 var sel_imgs=[ 中添加它时,当访问者在下拉菜单中选择一个选项时,它会禁用更改图像的功能。

function diva_imgBySel(objId,theValue) { //v0.1 divaHTML.com

    var sel_imgs=["images/md01.jpeg","images/md01.jpeg","images/md02.jpeg","images/md03.jpeg","images/md04.jpeg","images/md06.jpeg","images/md05.jpeg","images/pic07.jpeg","images/pic08.jpeg"];

    var d=document;
    theValue=sel_imgs[theValue];
    if (!theValue || !d.getElementById ) return;
    var obj = d.getElementById(objId);
    if (obj) obj.src=theValue;    
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
</script>

这是页面下方的表单代码:

<img src="images/md01.jpeg" alt="" name="theImg" width="147" height="161" id="theImg" style="border: 1px solid #ffffff;" align="LEFT" /><strong>Add a vase:</strong>
<input type="checkbox" name="anniv" id="anniv" value="6.95" onclick="priceUpdate('anniv');"/>
             &pound;6.95
            </td>
          <td width="71%" align="left" valign="top"> <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td align="left"></br>&nbsp;&nbsp;&nbsp;&nbsp;<select name="productColors" id="productColors" style="width:270px; margin-bottom:5px; margin-top:5px" onchange="diva_imgBySel('theImg',this.selectedIndex)">
                <option value="MD1004">Select Flower Arrangement</option>
                <option value="MD1004">Bloom</option>
                <option value="MD1001">Majestic</option>
                <option value="MD1007">Mothers Day Premium</option>
                <option value="MD1002">Mum's the Word</option>
                <option value="NF1011">Joyful Orchids</option>
                <option value="NF1010">Lily and Rose Hand Tied</option>
                <option value="NF1013">Sunflower Sensation</option>
                <option value="SF002-free-vase">Tranquililty</option>
                </select></td>

这是附加了鼠标悬停效果的节点。它工作正常,但为用户所做的每个选择重复相同的大图像。我需要知道如何为每个图像复制这种效果,而不仅仅是“md01.jpeg”。

<a href="#" rel="imgtip[1]"><img src="images/md01.jpeg" alt="" name="theImg" width="147" height="161" id="theImg" style="border: 1px solid #ffffff;" align="LEFT" /><a/>

<link rel="stylesheet" type="text/css" href="ddimgtooltip.css" />

<script type="text/javascript" src="ddimgtooltip.js">

/***********************************************
* Image w/ description tooltip v2.0- (c) Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for this script and 100s more
***********************************************/

</script>

这是图像鼠标悬停的代码。它是一个 .js 文件

/* Image w/ description tooltip v2.0
* Created: April 23rd, 2010. This notice must stay intact for usage 
* Author: Dynamic Drive at http://www.dynamicdrive.com/
* Visit http://www.dynamicdrive.com/ for full source code
*/


var ddimgtooltip={

    tiparray:function(){
        var tooltips=[]
        //define each tooltip below: tooltip[inc]=['path_to_image', 'optional desc', optional_CSS_object]
        //For desc parameter, backslash any special characters inside your text such as apotrophes ('). Example: "I\'m the king of the world"
        //For CSS object, follow the syntax: {property1:"cssvalue1", property2:"cssvalue2", etc}

        tooltips[0]=["images/pic01.jpg"]
        tooltips[1]=["images/pic02.jpg"]
        tooltips[2]=["images/pic03.jpg"]
        tooltips[3]=["images/pic04.jpeg"]
        tooltips[4]=["images/pic05.jpeg"]
        tooltips[5]=["images/pic06.jpeg"]

        return tooltips //do not remove/change this line
    }(),

    tooltipoffsets: [20, -30], //additional x and y offset from mouse cursor for tooltips

    //***** NO NEED TO EDIT BEYOND HERE

    tipprefix: 'imgtip', //tooltip ID prefixes

    createtip:function($, tipid, tipinfo){
        if ($('#'+tipid).length==0){ //if this tooltip doesn't exist yet
            return $('<div id="' + tipid + '" class="ddimgtooltip" />').html(
                '<div style="text-align:center"><img src="' + tipinfo[0] + '" /></div>'
                + ((tipinfo[1])? '<div style="text-align:left; margin-top:5px">'+tipinfo[1]+'</div>' : '')
                )
            .css(tipinfo[2] || {})
            .appendTo(document.body)
        }
        return null
    },

    positiontooltip:function($, $tooltip, e){
        var x=e.pageX+this.tooltipoffsets[0], y=e.pageY+this.tooltipoffsets[1]
        var tipw=$tooltip.outerWidth(), tiph=$tooltip.outerHeight(), 
        x=(x+tipw>$(document).scrollLeft()+$(window).width())? x-tipw-(ddimgtooltip.tooltipoffsets[0]*2) : x
        y=(y+tiph>$(document).scrollTop()+$(window).height())? $(document).scrollTop()+$(window).height()-tiph-10 : y
        $tooltip.css({left:x, top:y})
    },

    showbox:function($, $tooltip, e){
        $tooltip.show()
        this.positiontooltip($, $tooltip, e)
    },

    hidebox:function($, $tooltip){
        $tooltip.hide()
    },


    init:function(targetselector){
        jQuery(document).ready(function($){
            var tiparray=ddimgtooltip.tiparray
            var $targets=$(targetselector)
            if ($targets.length==0)
                return
            var tipids=[]
            $targets.each(function(){
                var $target=$(this)
                $target.attr('rel').match(/\[(\d+)\]/) //match d of attribute rel="imgtip[d]"
                var tipsuffix=parseInt(RegExp.$1) //get d as integer
                var tipid=this._tipid=ddimgtooltip.tipprefix+tipsuffix //construct this tip's ID value and remember it
                var $tooltip=ddimgtooltip.createtip($, tipid, tiparray[tipsuffix])
                $target.mouseenter(function(e){
                    var $tooltip=$("#"+this._tipid)
                    ddimgtooltip.showbox($, $tooltip, e)
                })
                $target.mouseleave(function(e){
                    var $tooltip=$("#"+this._tipid)
                    ddimgtooltip.hidebox($, $tooltip)
                })
                $target.mousemove(function(e){
                    var $tooltip=$("#"+this._tipid)
                    ddimgtooltip.positiontooltip($, $tooltip, e)
                })
                if ($tooltip){ //add mouseenter to this tooltip (only if event hasn't already been added)
                    $tooltip.mouseenter(function(){
                        ddimgtooltip.hidebox($, $(this))
                    })
                }
            })

        }) //end dom ready
    }
}

//ddimgtooltip.init("targetElementSelector")
ddimgtooltip.init("*[rel^=imgtip]")

【问题讨论】:

  • 尝试抛弃dreamweaver,它会让你的代码变得异常复杂。找一个好的IDE或者文本编辑器,很多都是免费的。它会让你成为一个更好的开发者。如果您在 Windows 上,请尝试 notepad++
  • @Ibu Dreamweaver 是适用于多种语言(php、coldfusion、javascript 等)的优秀 IDE,并且可能是 CSS/HTML 的最佳产品……您可能应该澄清:“Dreamweaver 使当用作所见即所得编辑器时,您的代码非常复杂...并且其预构建的代码块可能有点难以解析。但是,它在代码突出显示、显示 html/css 方面做得很好包括include()ed 文件(shtml、php 等)、参数建议(js、php 等)和语法错误警告。当您依赖它实际为您编写代码时,问题就会出现。跨度>

标签: php javascript jquery


【解决方案1】:

此代码示例实际上并未引用您要关注的标记。你在这里得到的是逻辑和表单元素将改变 id 为“theImg”的 img 标签的 src。您需要查看的是具有 'theImg' id 的元素,并在那里添加一个侦听器以触发您想要的任何大图像效果。

【讨论】:

  • 嗨,布赖恩。这正是我想说的!!对不起,我是这方面的新手。我该怎么做呢?我如何在“theImg”id 元素中添加链接。每个图像的链接。非常感谢任何帮助。
  • 我们可能需要查看更多代码才能提供帮助。具体来说,我们需要查看图像节点。在代码中查找类似于“ id="theImg" ”的内容,并将完整节点添加到原始问题中的代码。
  • 哦,好的。我在我认为具有图像节点的表单上方找到了一条线。谢谢。如果我需要粘贴更多代码,请告诉我。
  • 宾果游戏! :) 好的,所以想法是当用户将鼠标悬停在图像节点上时,您想触发“大图像显示”效果。根据您希望较大图像的显示方式(新窗口、填充当前窗口、在灯箱中等),它可能会非常复杂,但对于您所在的位置,最简单的方法是添加一个 onmouseover 事件侦听器.查看developer.mozilla.org/en/DOM/element.onmouseover 以获得一些很好的解释和代码示例。
  • 对不起,我应该再澄清一点。我已经有了鼠标悬停的代码。问题是当我将它附加到节点时,它可以工作,但它为访问者所做的每个选择显示相同的大图像。因此,当他们在表单的下拉列表中选择另一个选项时,图像会按预期更改,但鼠标悬停图像保持不变。我想弄清楚的是如何为每个图像添加不同的大图像鼠标悬停链接。希望这是有道理的。我将在我的原始帖子中编辑节点代码以显示我的鼠标悬停效果。
【解决方案2】:
<option value="MD1001"><a href="your_link"><img src="your_image_path"/></a>Your non-Link Text</option>

这就是我的布局。我不确定你到底要什么。但这会将图像放在那里。只需将“your_link”、“your_image_path”替换为您的数据即可。

【讨论】:

  • 谢谢。我之前尝试过,但由于表单本身调用了我在这里第一次展示的函数脚本中的图像,它忽略了放置在表单中的图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 2014-10-18
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多