如何将方法附加到对象以更改 CSS
How can I attach a method to an object to change CSS
我想制作一个方法,这样我就可以动态地更改元素的CSS,而无需document.getElementsByTagName("div")[0].style.borderColor = "red"
长手方法,并实现类似jQuery库中发生的事情。但是,当我尝试将css
方法附加到这样的元素时
var __shorthandCss = function(sel){
var el = document.querySelectorAll(sel)[0];
el.css = function(attrs){
for (var attr in attrs){
el.style[attr] = attrs[attr];
}
};
};
我收到错误:
Uncaught TypeError: Cannot read property 'css' of undefined
我在这里做错了什么?我是否以完全错误的方式这样做?
var __shorthandCss = function(sel) {
var el = document.querySelectorAll(sel)[0];
console.log(el);
el.css = function(attrs) {
for (var attr in attrs) {
console.log(attr, attrs)
el.style[attr] = attrs[attr];
}
};
};
var trig = function() {
__shorthandCss("#a").css({
"borderColor": "red"
});
console.log(a);
};
document.getElementById("b").addEventListener("click", trig);
div {
border: 1px solid black;
padding: 5px;
width: 150px;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<button type="button" id="b">change border</button>
<div id="a">test div</div>
</body>
</html>
你没有从函数返回 el
当你调用__shorthandCss()时,不会返回任何css()
函数作为属性存在的,所以你需要返回你分配了css()的el。
var __shorthandCss = function(sel){
var el = document.querySelectorAll(sel)[0];
console.log(el);
el.css = function(attrs){
for (var attr in attrs){
console.log(attr, attrs)
el.style[attr] = attrs[attr];
}
};
return el;
};
推荐
您可以使用document.querySelector(sel)
而不是document.querySelectorAll(sel)[0]
因为它执行相同的操作
工作演示:
var __shorthandCss = function(sel){
var el = document.querySelector(sel);
console.log(el);
el.css = function(attrs){
for (var attr in attrs){
console.log(attr, attrs)
el.style[attr] = attrs[attr];
}
};
return el;
};
var trig = function(){
__shorthandCss("#a").css({"borderColor": "red"});
console.log(a);
};
document.getElementById("b").addEventListener("click", trig);
div{
border: 1px solid black;
padding: 5px;
width: 150px;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<button type="button" id="b">change border</button>
<div id="a">test div</div>
</body>
</html>
相关文章:
- 将css属性添加到对象的集合中
- 使用CSS将鼠标悬停在子对象上时,删除父对象上的悬停样式
- 使用<对象>用于SVG和HTML中的内联css以编辑填充
- 在模板中为Django表单分离媒体类对象的JS和CSS列表输出
- 如何使css/js对象在所有浏览器上都相同
- 在jquery中使用css对象增加宽度
- 使用多个 css 类将 css 转换属性应用于 DOM 对象时遇到问题
- jQuery对象不是从CSS #id 形成的
- 更改我正在侦听的事件Javascript的对象的CSS
- 将.css()存储在对象中,jQuery
- 在循环中使用JS和CSS更改对象的旋转
- 如何使用javascript调整此css对象
- 在单击选项卡式项目时隐藏和创建另一个对象 - HTML CSS
- Chrome 中的突变对象无法检测属性和 CSS 更改
- 在 IE6 中运行时添加 CSS 规则 - 对象不支持此属性或方法
- 获取 CSS 中指定的对象位置,以便在 jQuery 中修改
- 如何将方法附加到对象以更改 CSS
- 将 CSS 对象居中放入框中
- 检查对象是否在 css 边框/css 包装器内
- Javascript对象css操作