我想将 CSS 属性添加到我的元素中,但我当前的解决方案会丢失对元素产生影响的所有先前属性。
function checkNr(id) {
var value = document.getElementById(id).value;
if (pFloat(value) == NaN) {
document.getElementById(id).setAttribute("style", "border:2px solid red; background-color: rgb(255, 125, 115);");
}
else {
document.getElementById(id).setAttribute("style", "border:default; background-color: rgb(255, 255, 255);");
}
}
在使用此方法之前,元素已经具有以下属性:
float: left;
width: 50px;
之后,元素会丢失这些属性,只留下 JavaScript 方法中的特定属性。所以,我想添加属性而不替换它们。
像这样设置样式属性,将覆盖该属性并删除以前设置的样式。
你真正应该做的是直接设置样式,而不是通过更改样式属性:
function checkNr(id) {
var elem = document.getElementById(id),
value = elem.value;
if (pFloat(value) == NaN) {
elem.style.border = '2px solid red';
elem.style.backgroundColor = 'rgb(255, 125, 115)';
} else {
elem.style.border = 'none';
elem.style.backgroundColor = 'rgb(255, 255, 255)';
}
}
function checkNr(id) {
var elem = document.getElementById(id);
var css = {};
if (pFloat(elem.value) == NaN) {
css = { border: '2px solid red', backgroundColor: 'rgb(255, 125, 115)' };
} else {
css = { border: 'none', backgroundColor: 'rgb(255, 255, 255)' };
}
Object.assign(elem.style, css);
}
对我来说最简单的方法是:
prev_style=obj.getAttribute("style");
added_style="background-color:red;"
if (prev_style==undefined || prev_style==null) { prev_style="" }
obj.setAttribute("style",prev_style+added_style);
或使用 jQuery
$(obj).attr("style",prev_style+added_style)
直接设置元素的样式属性将覆盖任何以前的值:
element.setAttribute("style", "border: 2px solid red; /* ... */")
<div id="element" style="float: right; /* ... */">...</div>
<!-- becomes -->
<div id="element" style="border:; 2px solid red; /* ... */">...</div>
相反,使用element.style.property = value
语法一次设置一个属性:
const checkNr = id => {
const element = document.getElementById(id)
const isNotNum = isNaN(pFloat(element.value))
element.style.background = `rgb(255, ${isNotNum ? "125, 115" : "255, 255"})`
element.style.border = isNotNum ? "2px solid red" : "default"
}
或者,更好的是,添加一个条件 CSS 类:
const checkNr = id => {
const element = document.getElementById(id)
const isNotNum = isNaN(pFloat(element.value))
element.classList.add(isNotNum ? "not-number" : "is-number");
}
.not-number {
background-color: rgb(255, 125, 115);
border: 2px solid red;
}
.is-number {
background-color: rgb(255, 255, 255);
border: default;
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(27条)