如何使用JavaScript以编程方式选择元素?

时间:2020-03-06 14:38:13  来源:igfitidea点击:

我想突出显示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#YOURIMAGEHER​​E")。focus();

我们可能还想在s.addRange(r)之前调用s.removeAllRanges()。