javascript - 通过 javascript 操作元素的样式后更改元素的 css 类不起作用

标签 javascript html css

html:

<input id="myinput" class="cinput" type="image" src="http://www.foodwater.org.au/images/triple-spiral-3-small-button.jpg"/>
<br><br><br><br>

<button id="s">set to visible class</button>
<button id="h">set to hidden class</button>
<button id="db">set display:block</button>
<button id="dn">set display:none</button>

JavaScript:

$("#s").on("click", show);
$("#h").on("click", hide);
$("#db").on("click", db);
$("#dn").on("click", dn);

function show() {
    document.getElementById("myinput").className = "cinputvis";
}

function hide() {
    document.getElementById("myinput").className = "cinput";
}

function db() {
    document.getElementById("myinput").style.display = "block";
}

function dn() {
    document.getElementById("myinput").style.display = "none";
}

CSS:

.cinput {
    position: absolute;
    display: none;
    top: 0px;
    left 0px;
    margin: 0px;
    border: 1px solid black;
    cursor: pointer;
}

.cinputvis {
    position: absolute;
    display: block;
    top: 0px;
    left 0px;
    margin: 0px;
    border: 1px solid black;
    cursor: pointer;
}

所以,如果我使用两个按钮来更改元素的类,我可以打开和关闭按钮,但是一旦我使用其他按钮直接操作 display 属性,我无法再使用更改 className 按钮来切换它们。

所以我想知道为什么会发生这种情况?更改类名不应该清除所有内容并重新分配 css 指令吗?

http://jsfiddle.net/5v8ub/6/

最佳答案

内联样式(例如由 JS 设置的样式,或 style="" block 中的样式)比 CSS 类具有更高的优先级。根据设计,它们始终会胜过内联样式,除非您在样式上使用 !important 来覆盖它。

关于javascript - 通过 javascript 操作元素的样式后更改元素的 css 类不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21069604/

相关文章:

javascript - 在 Photoshop 中查找所有图层/图像的平均颜色并使用平均颜色的文件名保存的脚本

php mysql 多重选择,下拉菜单,不保存回数据库

html - 据我所知这是可能的,我将从哪里开始?

javascript - 如何水平居中两列列表项(有或没有 Bootstrap)?

javascript - 从按钮中删除 ng-grid 表中的行

javascript - Bootstrap Collapse 组件的初始使用不起作用

css - 使用 gulp rebase CSS url

html - Div 没有响应 css

javascript - 为什么不使用 mouseup 事件目标而不是 "old school"拖放的位置?

javascript - 使用 Javascript if 函数显示 SweetAlert 弹出窗口