gpt4 book ai didi

javascript - JavaScript 的 onmouseover 问题(使用 django 和 django-imagekit 呈现)

转载 作者:可可西里 更新时间:2023-11-01 14:58:35 25 4
gpt4 key购买 nike

我正在使用 Imagekit。 View.py 包括:

def pics(request):
p = Photo.objects.all()
return render_to_response('Shots.html',
{'p': p})

模板中的以下简单代码将生成关联的图像:

{% for p in p %}
<img src = "{{ p.display.url }}">
<img src = "{{ p.thumbnail_image.url }}">
{% endfor %}

我正在尝试生成一系列缩略图 {{ p.thumbnail_image.url }},当鼠标悬停时,将通过 Javascript 生成稍大版本的图像 {{ p.display.url }} .模板中的以下代码尝试这样做:

<html>
<head>
<HEAD>

<script
language="Javascript">
{ image1 = new Image
image2 = new Image
image1.src = {{ p.thumbnail_image.url }}
image2.src = {{ p.display.url }}
</script>
</head>
<body>

{% for p in p %}
<a href=""
onMouseOver="document.rollover.src=
image2.src
onMouseOut="document.rollover.src=
image1.src">
<img src="{{ p.thumbnail_image.url }}" border=0 name="rollover"></a>
{% endfor %}
</body>
</html>

这将显示一系列缩略图,但当鼠标悬停时不会显示较大的图像。我相信这与我指定变量 {{ p.display.url }} 的方式有关。

最佳答案

我清理了你的代码,但正如 @fish2000 提到的,这仍然是一种肮脏的做法。我想出了以下内容:

<html>
<head>

<script>
var thumbs = [];
var hovers = [];

{% for p in p %}
thumbs.push(new Image());
thumbs[thumbs.length - 1].src = p.thumbnail_image.url;
hovers.push(new Image());
hovers[hovers.length - 1].src = p.display.url;
{% endfor %}

</script>
</head>
<body>

{% for idx, p in enumerate(p) %}
<a href="">
<img src="{{ p.thumbnail_image.url }}" border=0 name="rollover" onmouseover="this.src = window.hovers[{{ idx }}].src" onmouseout="this.src = window.thumbs[{{ idx }}].src">
</a>
{% endfor %}
</body>
</html>

我在 JSFiddle 上写了一个基本示例来尝试模拟您的 Python 代码将产生什么:http://jsfiddle.net/TeEHU/

为了稍微解释一下我所做的,我在开始时设置了几个 JavaScript 数组来保存缩略图和悬停。最初,我只是想让它们成为引用 URL 的字符串数组,但后来采用了您使用 Image 对象预加载图像悬停的方式。

从这里开始,我摆脱了您在 anchor 标记中定义的事件处理程序属性,并将其移动到图像标记中,这样当用户将鼠标悬停在图像上时,我们可以直接访问图像属性。

我一般不会容忍从服务器端生成动态 JavaScript 的使用,但我只是想与您的代码保持一致。

关于javascript - JavaScript 的 onmouseover 问题(使用 django 和 django-imagekit 呈现),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2497476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com