如何使用JavaScript以编程方式选择元素?
我想突出显示HTML文档中的一个<img>`,好像用户已经使用鼠标突出显示了它。有没有办法使用JavaScript做到这一点?
我只需要它就可以在Mozilla中工作,但是欢迎所有信息。
编辑:我想要选择图像的原因实际上不是,所以它看起来突出显示,但是我可以使用XPCOM将选择的图像复制到剪贴板。因此,实际上必须选择img才能起作用。
解决方案
我们可以交换图像的来源,如img.src =" otherimage.png";
实际上我是在某一时刻完成此操作的,可以做一些事情来预加载图像。
我什至在图像元素上设置了特殊属性,例如swap-image =" otherimage.png",然后搜索具有该属性的任何元素,并设置处理程序以自动交换图像...我们可以做一些有趣的事情。
对不起,我误解了这个问题!但是无论如何,对于那些有兴趣做我正在谈论的事情的人,这是我的意思的示例(粗略的实现,我建议使用jQuery之类的框架来改进它,但这只是使我们步入正轨的一种方法):
<html> <body> <script language="javascript"> function swap(name) { document.getElementById("image").src = name; } </script> <img id="image" src="test1.png" onmouseover="javascript:swap('test0.png');" onmouseout="javascript:swap('test1.png');"> </body> </html>
给img标签指定一个ID。使用document.getElementById('id')。
<script type="text/javascript" language="javascript"> function highLight() { var img = document.getElementById('myImage'); img.style.border = "inset 2px black"; } </script> <img src="whatever.gif" id="myImage" onclick="hightLight()" />
编辑::
我们可以尝试使用.focus使其具有焦点。
" highLight"解决方案的基本思想是可以的,但是我们可能想为img设置一个"静态"边框样式(在css中定义),其尺寸与highLight方法中指定的尺寸相同,因此它不调整大小。
另外,我相信,如果我们将调用更改为" highLight(this)",而函数def更改为" highLight(obj)",则可以跳过" document.getElementById()"调用(以及只要我们执行" obj.style.border"," img"的" id"属性就可以了。
我们可能还需要正确拼写" highLight"。
这是一个示例,该示例选择页面上的第一张图像(如果我们在Firebug的此页面上对其进行测试,则将是Stack Overflow徽标):
var s = window.getSelection() var r = document.createRange(); r.selectNode(document.images[0]); s.addRange(r)
相关文件:
- http://developer.mozilla.org/en/DOM/window.getSelection
- http://developer.mozilla.org/en/DOM/range.selectNode
- http://developer.mozilla.org/en/DOM/Selection/addRange
我们到底想做什么?如果我们使用的是XPCOM,则可能是在编写应用程序或者扩展程序。我们不能直接获取图像数据并将其直接放在剪贴板上吗?
我个人选择元素的选择是jquery:
然后,获得我们选择的元素是:
$(" img#YOURIMAGEHERE")。focus();
我们可能还想在s.addRange(r)之前调用s.removeAllRanges()。