使用javascript从css中检索背景图像而不使用它's的ID
retrieve background image from css using javascript without using it's ID
我环顾四周,很难找到一个能做我想做的事情的线程。就我而言,我甚至不知道这是否可能。我想做的是在点击时检索背景图像文件名(尤其是如果它是一个链接)。我有一个记录所有点击的脚本,但我最后需要的是存储在CSS文件中的背景图像名称(甚至可以使用名称的文件路径)。对于如何在不使用div或类的情况下实现这一点,有人有想法或解决方案吗?以下是我现在拥有的:
JavaScript&HTML
<script type="text/javascript">
var arrayWithElements = new Array(); //,replaytimer;
document.onclick = clickListener;
function clickListener(e)
{
var clickedElement=(window.event)
? window.event.srcElement
: e.target,
tags=document.getElementsByTagName(clickedElement.tagName);
for(var i=0;i<tags.length;++i)
{
if(tags[i]==clickedElement)
{
if(clickedElement.tagName=="A")
{
arrayWithElements.push({tag:clickedElement.tagName,index:i});
console.log(clickedElement.baseURI,clickedElement.href,clickedElement.innerText,document.location.href,document.images.href);
}
if(clickedElement.tagName=="IMG")
{
arrayWithElements.push({tag:clickedElement.tagName,index:i});
console.log(clickedElement.baseURI,clickedElement.parentNode.href,clickedElement.innerText,document.location.href,document.getElementsById(element).src);
}
if(clickedElement.tagName=="DIV")
{
arrayWithElements.push({tag:clickedElement.tagName,index:i});
console.log(clickedElement.baseURI,clickedElement.parentNode.href,clickedElement.innerText,document.location.href,document.getElementsById(element).src);
}
if(clickedElement.tagName=="CLASS")
{
arrayWithElements.push({tag:clickedElement.tagName,index:i});
console.log(clickedElement.baseURI,clickedElement.parentNode.href,clickedElement.innerText,document.location.href,document.getElementsById(element).src);
}
}
}
}
</script>
</head>
<a id="1" href="#">trial1</a>
<a id="2" href="http://www.google.com" target="blank">google</a>
<a id="3" href="http://www.google.com">google</a>
<a id="4" href="http://www.google.com" target="_blank"><img id="image" src="untitled.jpg"/></a>
<a id="5" href="trial.html">
<input type="text" id="text-test"/>
<a href="http://www.google.com"><div id="image-link"></div></a>
CSS:
#image-link {
background-image:url('untitled.jpg');
width: 50px;
height:50px;
border: 1px solid #000000;
}
这是一个测试文件,将在不久的将来转换使用。感谢
在较新的浏览器上,可以使用window.getComputedStyle(clickedElement)
查找背景图像属性。
根据您的代码,在所有浏览器中只需使用JQuery的文件名或路径:
var withId = $("#image-link").css("background-image").split('(')[1].split(')'),
withoutId = $("img").attr("src");
// with id and css file
console.log(withId[0]);
// without id and inline style
console.log(withoutId);
是的,正如Alnitak所说,使用getComputedStyle
,但为了与更多浏览器兼容,请查看另一个问题:
获取元素CSS属性(宽度/高度)的设置值(以百分比/em/px/etc为单位)
注意:我希望能够评论另一个用户的好答案,而不是发布我自己的答案,这几乎是一样的,但有一些额外的信息。不幸的是,我不能,因为stackoverflow不允许代表少于50的用户这样做。所以我不得不这样发布
相关文章:
- 如何仅为某些类或id导入CSS
- 如何访问svg内部id并让CSS更改该id的填充颜色
- 如何使用随机css id为元素设置样式
- css样式加载+id.例如加载1、加载300
- 仅将 CSS 规则应用于
中的第一个 ,而不分配类/ID - Ember.js为特定的模型id添加css类
- 使用Jquery更改css样式适用于id's、 不在课堂上
- 如何在一个表的输入中搜索一组特定的值,而不是另一个表's id(s)值以添加css
- CSS/Javascript带有类's和id's
- 使用CSS/JavaScript在活动页面上突出显示活动导航菜单项,无id
- 动态更改 CSS 中的“onlink”ID
- 使用内部脚本更改表单元格 css,而不依赖于 id、类或包含
- 如果我声明 CSS 中的 id 复制到 Javascript 中的 id 会发生什么
- jQuery对象不是从CSS #id 形成的
- 来自 CSS ID 的百分比变量
- 根据屏幕宽度添加/删除 CSS ID
- 添加/删除 CSS 类属性以尊重不基于 Div id 的类
- 如何使用 jquery 通过 CSS 隐藏来选择 col id
- 使用 JavaScript 在 iframe 中通过 ID 更改元素的 CSS 样式
- TinyMCE和id css被忽略