JavaScript-在keyDown上切换css样式
JavaScript - Toggle css style on keyDown
需要一些帮助来找出我的第二个函数的问题。JSfiddle在这里:JSfiddle
//add an outline on click
function addOutline(){
box1.classList.toggle('selected');
}
box1.addEventListener('click', addOutline, false);
//change shape on element with class "selected" when "e" is pressed
function changeShape (event) {
var arr = document.getElementsByClassName("selected");
var key = event.keyCode;
for(var i = 0; i < arr.length; i++) {
if(key === 69 && arr[i].className === "selected") {
box1.classList.toggle('circle');
}
}
}
document.addEventListener("keydown", changeShape, false);
基本上,我想做的是,当按下键"e"时,如果元素className等于"selected",那么div"box"应该切换circle类(从css)。
我让它只使用keyDown,但当试图将className语句添加到函数中时,它不起作用。请查看顶部的jsfiddle以了解更多信息。有什么想法吗?
因为className包含多个类,所以这不起作用:
arr[i].className === "selected"
由于此时arr
仅包含元素,这些元素包括"选定"类,因此不需要进行该检查。
但是,如果您出于其他原因需要它,您可以使用classList.contains
:
arr[i].classList.contains("selected")
Fiddle
您的元素有多个类吗?如果是,也许这会有所帮助:
if(key === 69 && arr[i].className.indexOf("selected") > -1) {
用indexOf()
更改此行有效:
if(key === 69 && arr[i].className.indexOf("selected")>-1)
更新的JS Fiddle
这是因为className不等于selected
,而是等于selected box center green size200
。
我会为has类添加函数,这样你就不必担心如果你有一个包含selected的类,然后只添加键代码和hasclass()的组合。
以下是hasClass的函数以及如何修改代码:
function hasClass(el, cls) {
return el.className && new RegExp("(''s|^)" + cls + "(''s|$)").test(el.className);
}
然后只需将您的代码更改为:
if(key === 69 && hasClass(arr[i],"selected")) {
box1.classList.toggle('circle');
}
这是更新的fiddle JSFiddle
相关文章:
- 如果文本字段为空,则使用JavaScript应用CSS样式
- FF和Chromium中CSS样式按钮的外观差异
- CSS样式属性留空
- CKeditor预览插件.js,为Chrome和IE进行编辑.因为它拒绝CSS样式
- 基于路由的CSS样式-Angular2
- 为未标记的文本添加CSS样式
- 使用JQuery将现有CSS样式扩展%-%
- JavaScript-在keyDown上切换css样式
- React js应用程序's在托管应用程序中打开时将覆盖css样式
- 如何在javascript中更改段落中不同行的css样式
- 通过javascript设置IE特定的css样式
- PHP,MySQL,AJAX-调用AJAX结果后,Bootstrap CSS样式不会显示
- 使用javascript/jquery检查.css样式表的名称
- JavaScript和CSS样式不适用于我的“;谷歌网站”;页
- 未使用jQuery验证器选中Css样式复选框时
- javascript正则表达式,用于编辑元素内部的css样式属性
- css样式加载+id.例如加载1、加载300
- 无法在运行时将CSS样式添加到元素中
- d3js 通过其 CSS 样式选择所有元素
- 如何根据浏览器宽度动态调整 css 样式表