- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您必须先单击任意位置,以便注册按 Shift 键。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!doctype html>
<html>
<head>
<title>Display Coloring</title>
<script src="jquery-2.2.1.min.js"></script>
<style type="text/css">
div {
background-color: rgb(0, 0, 0);
width: 20px;
height: 20px;
left: 0;
top: 0;
bottom: 0;
line-height: 0;
margin: 0;
padding: 0;
display: inline-block;
float: left;
}
body {
top: 0;
left: 0;
bottom: 0;
margin: 0;
padding: 0;
margin: 0;
width: 1920px;
height: 1080px;
}
div:hover {
background-color: rgb(0, 0, 0);
background-color: rgba(255, 0, 0, 0.5);
}
input {
float: left;
width: 20px;
height: 20px;
top: 0;
left: 0;
bottom: 0;
padding: 0;
-webkit-appearance: none;
background-color: rgba(0, 0, 0, 0);
box-shadow: none !important;
outline: none;
border: none;
word-spacing: 0;
letter-spacing: 0;
}
#conDiv {
width: 1920px;
height: 1080px;
background-color: transparent;
position: absolute;
z-index: 1;
}
#conInput {
width: 1920px;
height: 1080px;
position: absolute;
z-index: -1;
}
</style>
</head>
<body>
<script>
var body = document.body;
a = [];
b = [];
c = [];
i = [];
d = [];
clicked = [];
altDown = false;
window.onload = function() {
conInput = document.createElement('div');
conInput.setAttribute('id', 'conInput');
document.body.appendChild(conInput);
conDiv = document.createElement('div');
conDiv.setAttribute('id', 'conDiv');
document.body.appendChild(conDiv);
//for(u=0;u<1911;u+=10){
for (u = 0; u < 1901; u += 20) {
a.push(u);
for (v = 0; v < 1061; v += 20) {
//for(v=0; v<1071; v+=10){
b.push(v);
var newDiv = document.createElement("div");
newDiv.id = b.length - 1;
conDiv.appendChild(newDiv);
}
}
//for(u=0;u<1911;u+=10){
// for(v=0; v<1071; v+=10){
for (u = 0; u < 1901; u += 20) {
for (v = 0; v < 1061; v += 20) {
c.push(v);
var newInput = document.createElement("input");
newInput.setAttribute('type', 'color');
newInput.id = c.length - 1;
conInput.appendChild(newInput);
}
}
function marking() {
$("body").on("keydown keyup", function(event) {
if (event.type == "keydown") {
console.log(event.type);
$('div').hover(function() {
if (event.keyCode == 16 && this.id !== "conDiv" && this.id !== "conInput") {
clicked.push(this);
this.style.backgroundColor = "#b3ffb3";
console.log(event);
}
})
} else {
console.log(event);
$('div').hover(function() {
if (event.keyCode == 16) {
//if()
if (this.id !== "conDiv" && this.id !== "conInput") {
this.style.backgroundColor = "#000000";
//console.log(event.shiftKey);
}
}
})
}
})
}
function changeColor() {
divs = body.getElementsByTagName('div');
inputs = body.getElementsByTagName('input');
for (var l = 0; l < inputs.length; l++) {
if (inputs[l].id !== "conInput") {
i.push(inputs[l]);
}
}
for (var k = 0; k < divs.length; k++) {
if (divs[k].id !== "conDiv" && divs[k].id !== "conInput") {
d.push(divs[k]);
}
}
$(document).ready(function() {
$("body").bind("keydown", function(event) {
if (event.altKey) {
for (var h in d) {
//if(d[h].id == "10272" && altDown == false){
if (d[h].id == "2544" && altDown == false) {
d[h].style.opacity = "0.4";
altDown = true;
}
//else if(d[h].id == "10272" && altDown == true) {
else if (d[h].id == "2544" && altDown == true) {
d[h].style.opacity = "1";
altDown = false;
}
}
}
});
});
$('div').on('click', function() {
if (this.id != "conDiv" && this.id != "conInput") {
if (event.ctrlKey) {
clicked.push(this);
for (var h in d) {
if (d[h].id == this.id) {
$(d[h]).css('background-color', 'rgba(255, 255, 102, 0.8)');
}
}
} else if (clicked.length > 0) {
for (var clk in clicked) {
target = document.getElementById(this.id);
$(target).click();
$(target).on('change', function() {
newColor = this.value;
parsed = newColor.charAt(0) == "#" ? newColor.substring(1, 7) : newColor;
r = parseInt(parsed.substring(0, 2), 16).toString();
g = parseInt(parsed.substring(2, 4), 16).toString();
b = parseInt(parsed.substring(4, 6), 16).toString();
newColorRGB = "(" + r + ", " + g + ", " + b + ")";
for (clk in clicked) {
clicked[clk].style.backgroundColor = newColor;
clicked[clk].setAttribute("title", newColorRGB);
}
clicked = [];
});
}
} else if (clicked.length == 0) {
for (var z in i) {
if (i[z].id == this.id) {
target = document.getElementById(this.id);
$(target).click();
$(target).on('change', function() {
newColor = this.value;
parsed = newColor.charAt(0) == "#" ? newColor.substring(1, 7) : newColor;
r = parseInt(parsed.substring(0, 2), 16).toString();
g = parseInt(parsed.substring(2, 4), 16).toString();
b = parseInt(parsed.substring(4, 6), 16).toString();
newColorRGB = "(" + r + ", " + g + ", " + b + ")";
for (var h in d) {
if (d[h].id == this.id) {
d[h].style.backgroundColor = newColor;
d[h].setAttribute("title", newColorRGB);
}
}
});
}
}
}
}
});
}
changeColor();
marking();
}
</script>
</body>
</html>
如果我按下shiftKey,它就会起作用,并且div会获得它们的颜色,但如果我释放shiftKey,状态将保持true 并且它会一直着色直到刷新。
这是代码:
function marking(){
$("body").bind("keydown", function(event) {
$('div').hover(function(){
if(event.shiftKey){
if(this.id !== "conDiv" && this.id !== "conInput"){
clicked.push(this);
this.style.backgroundColor = "#b3ffb3";
console.log(event.shiftKey);
}
}
else{};
}
})
});
}
我可以以某种方式告诉程序在释放shiftKey时使用react吗?
更新
$("body").on("keydown keyup", function(event) {
if(event.type == "keydown"){
$('div').hover(function(){
if(event.keyCode == 16 && this.id !== "conDiv" && this.id !== "conInput"){
clicked.push(this);
this.style.backgroundColor = "#b3ffb3";
console.log(event);
}
})
}
else{
console.log(event);
$('div').hover(function(){
if(event.keyCode == 16){
if(this.id !== "conDiv" && this.id !== "conInput"){
this.style.backgroundColor = "#000000";
}
}
})
}
})
现在它会更改 shiftKey 上的颜色并将 keyup 上的颜色更改为 #000000。但它仍然停留在 keydown 上,如果我将鼠标悬停在 div 上,它会将对象插入我的数组而不着色。
我希望它在按下 Shift 时着色,而在释放 Shift 时不执行任何操作。
我错过了什么?
最佳答案
您似乎需要的是 mousemove
事件以及 shiftKey event property
.
现在的一个问题是,您没有取消按下 Shift 时设置的悬停处理程序。
主要区别是
function marking() {
$("body").on("mousemove", "div", function(event) {
if (event.shiftKey) {
this.style.backgroundColor "#b3ffb3";
}
})
}
我修改了下面的代码
<!doctype html>
<html>
<head>
<title>Display Coloring</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<style type="text/css">
div {
background-color: rgb(0, 0, 0);
width: 20px;
height: 20px;
left: 0;
top: 0;
bottom: 0;
line-height: 0;
margin: 0;
padding: 0;
display: inline-block;
float: left;
}
body {
top: 0;
left: 0;
bottom: 0;
margin: 0;
padding: 0;
margin: 0;
width: 1920px;
height: 1080px;
}
div:hover {
background-color: rgb(0, 0, 0);
background-color: rgba(255, 0, 0, 0.5);
}
input {
float: left;
width: 20px;
height: 20px;
top: 0;
left: 0;
bottom: 0;
padding: 0;
-webkit-appearance: none;
background-color: rgba(0, 0, 0, 0);
box-shadow: none !important;
outline: none;
border: none;
word-spacing: 0;
letter-spacing: 0;
}
#conDiv {
width: 1920px;
height: 1080px;
background-color: transparent;
position: absolute;
z-index: 1;
}
#conInput {
width: 1920px;
height: 1080px;
position: absolute;
z-index: -1;
}
</style>
</head>
<body>
<script>
var body = document.body;
a = [];
b = [];
c = [];
i = [];
d = [];
clicked = [];
altDown = false;
window.onload = function() {
conInput = document.createElement('div');
conInput.setAttribute('id', 'conInput');
document.body.appendChild(conInput);
conDiv = document.createElement('div');
conDiv.setAttribute('id', 'conDiv');
document.body.appendChild(conDiv);
//for(u=0;u<1911;u+=10){
for (u = 0; u < 1901; u += 20) {
a.push(u);
for (v = 0; v < 1061; v += 20) {
//for(v=0; v<1071; v+=10){
b.push(v);
var newDiv = document.createElement("div");
newDiv.id = b.length - 1;
conDiv.appendChild(newDiv);
}
}
//for(u=0;u<1911;u+=10){
// for(v=0; v<1071; v+=10){
for (u = 0; u < 1901; u += 20) {
for (v = 0; v < 1061; v += 20) {
c.push(v);
var newInput = document.createElement("input");
newInput.setAttribute('type', 'color');
newInput.id = c.length - 1;
conInput.appendChild(newInput);
}
}
function marking() {
$("body").on("mousemove", "div", function(event) {
if (event.shiftKey) {
this.style.backgroundColor = "#b3ffb3";
}
})
}
function changeColor() {
divs = body.getElementsByTagName('div');
inputs = body.getElementsByTagName('input');
for (var l = 0; l < inputs.length; l++) {
if (inputs[l].id !== "conInput") {
i.push(inputs[l]);
}
}
for (var k = 0; k < divs.length; k++) {
if (divs[k].id !== "conDiv" && divs[k].id !== "conInput") {
d.push(divs[k]);
}
}
$(document).ready(function() {
$("body").bind("keydown", function(event) {
if (event.altKey) {
for (var h in d) {
//if(d[h].id == "10272" && altDown == false){
if (d[h].id == "2544" && altDown == false) {
d[h].style.opacity = "0.4";
altDown = true;
}
//else if(d[h].id == "10272" && altDown == true) {
else if (d[h].id == "2544" && altDown == true) {
d[h].style.opacity = "1";
altDown = false;
}
}
}
});
});
$('div').on('click', function() {
if (this.id != "conDiv" && this.id != "conInput") {
if (event.ctrlKey) {
clicked.push(this);
for (var h in d) {
if (d[h].id == this.id) {
$(d[h]).css('background-color', 'rgba(255, 255, 102, 0.8)');
}
}
} else if (clicked.length > 0) {
for (var clk in clicked) {
target = document.getElementById(this.id);
$(target).click();
$(target).on('change', function() {
newColor = this.value;
parsed = newColor.charAt(0) == "#" ? newColor.substring(1, 7) : newColor;
r = parseInt(parsed.substring(0, 2), 16).toString();
g = parseInt(parsed.substring(2, 4), 16).toString();
b = parseInt(parsed.substring(4, 6), 16).toString();
newColorRGB = "(" + r + ", " + g + ", " + b + ")";
for (clk in clicked) {
clicked[clk].style.backgroundColor = newColor;
clicked[clk].setAttribute("title", newColorRGB);
}
clicked = [];
});
}
} else if (clicked.length == 0) {
for (var z in i) {
if (i[z].id == this.id) {
target = document.getElementById(this.id);
$(target).click();
$(target).on('change', function() {
newColor = this.value;
parsed = newColor.charAt(0) == "#" ? newColor.substring(1, 7) : newColor;
r = parseInt(parsed.substring(0, 2), 16).toString();
g = parseInt(parsed.substring(2, 4), 16).toString();
b = parseInt(parsed.substring(4, 6), 16).toString();
newColorRGB = "(" + r + ", " + g + ", " + b + ")";
for (var h in d) {
if (d[h].id == this.id) {
d[h].style.backgroundColor = newColor;
d[h].setAttribute("title", newColorRGB);
}
}
});
}
}
}
}
});
}
changeColor();
marking();
}
</script>
</body>
</html>
关于Javascript - 按下按键后保持按下状态(返回 true),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36359471/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在编码时,我问了自己这个问题: 这样更快吗: if(false) return true; else return false; 比这个? if(false) return true; return
如何在逻辑条件下进行“返回”? 在这样的情况下这会很有用 checkConfig() || return false; var iNeedThis=doSomething() || return fa
这是我的正则表达式 demo 如问题所述: 如果第一个数字是 1 则返回 1 但如果是 145 则返回 145 但如果是 133 则返回 133 样本数据a: K'8134567 K'81345678
在代码高尔夫问答部分查看谜题和答案时,我遇到了 this solution返回 1 的最长和最晦涩的方法 引用答案, int foo(void) { return! 0; } int bar(
我想在下面返回 JSON。 { "name": "jackie" } postman 给我错误。说明 Unexpected 'n' 这里是 Spring Boot 的新手。 1日龄。有没有正确的方法来
只要“is”返回 True,“==”不应该返回 True 吗? In [101]: np.NAN is np.nan is np.NaN Out[101]: True In [102]: np.NAN
我需要获取所有在 6 号或 7 号房间或根本不在任何房间的学生的详细信息。如果他们在其他房间,简单地说,我不希望有那个记录。 我的架构是: students(roll_no, name,class,.
我有一个表单,我将它发送到 php 以通过 ajax 插入到 mysql 数据库中。一切顺利,php 返回 "true" 值,但在 ajax 中它显示 false 消息。 在这里你可以查看php代码:
我在 Kotlin 中遇到了一个非常奇怪的无法解释的值比较问题,以下代码打印 假 data class Foo ( val a: Byte ) fun main() { val NUM
请注意,这并非特定于 Protractor。问题在于 Angular 2 的内置 Testability service Protractor 碰巧使用。 Protractor 调用 Testabil
在调试窗口中,以下表达式均返回 1。 Application.WorksheetFunction.CountA(Cells(4 + (i - 1) * rows_per_record, 28) & "
我在本地使用 jsonplaceholder ( http://jsonplaceholder.typicode.com/)。我正在通过 extjs rest 代理测试我的 GET 和 POST 调用
这是 Postman 为成功调用我的页面而提供的(修改后的)代码段。 var client = new RestClient("http://sub.example.com/wp-json/wp/v2
这个问题在这里已经有了答案: What to do with mysqli problems? Errors like mysqli_fetch_array(): Argument #1 must
我想我对 C 命令行参数有点生疏。我查看了我的一些旧代码,但无论这个版本是什么,都会出现段错误。 运行方式是 ./foo -n num(其中 num 是用户在命令行中输入的数字) 但不知何故它不起作用
我已经编写了一个类来处理命名管道连接,如果我创建了一个实例,关闭它,然后尝试创建另一个实例,调用 CreateFile() 返回 INVALID_HANDLE_VALUE,并且 GetLastErro
即使 is_writable() 返回 true,我也无法写入文件。当然,该文件存在并且显然是可读的。这是代码: $file = "data"; echo file_get_contents($fil
下面代码中的变量 $response 为 NULL,尽管它应该是 SOAP 请求的值。 (潮汐列表)。当我调用 $client->__getLastResponse() 时,我从 SOAP 服务获得了
我一直在网上的不同论坛上搜索答案,但似乎没有与我的情况相符的... 我正在使用 Windows 7,VS2010。 我有一个使用定时器来调用任务栏刷新功能的应用程序。在该任务栏函数中包含对 LoadI
我是一名优秀的程序员,十分优秀!