您现在的位置:首页 >> 前端 >> 内容

JavaWeb模拟键盘

时间:2016/11/26 9:25:00 点击:

  核心提示:模拟键盘功能1. 实现跑马灯效果2.实现闪屏效果3.按下按键,点亮对应按键;松开按键,熄灭对应按键4.按下按键,输出其对应显示值、ASCII值、字符值及大写字符值显示效果 跑马灯 闪屏 点亮按键 ...

模拟键盘

功能

1. 实现跑马灯效果

2.实现闪屏效果

3.按下按键,点亮对应按键;松开按键,熄灭对应按键

4.按下按键,输出其对应显示值、ASCII值、字符值及大写字符值

显示效果

跑马灯
JavaWeb模拟键盘
闪屏
JavaWeb模拟键盘
点亮按键
JavaWeb模拟键盘
输出按键显示值、ASCII值等
JavaWeb模拟键盘

技术点

html—动态生成表格 css—选择器 js—定时器及onkeydown和onkeyup事件 数组及数组指针

代码

1.html代码





 

2.css代码

/*设置普通按键的样式*/
    .divclass{
        width: 80;
        height: 50;
        background-color: black;
        color: white;
        text-align: center;
        padding-top: 30;
    }

/*设置占两列的按键的样式*/
.pclasscol2{
    width: 172;
    height: 50;
    background-color: black;
    color: white;
    text-align: center;
    padding-top: 30;
}

/*设置占两行的按键的样式*/
.pclassrow2{
    width: 80;
    height: 100;
    background-color: black;
    color: white;
    text-align: center;
    padding-top: 70;
}

/*设置占五行的按键的样式*/
.pclasscol5{
    width: 448;
    height: 50;
    background-color: black;
    color: white;
    text-align: center;
    padding-top: 30;
}

3.js代码

DefineArray.js

/定义相关数组和数组指针/

/定义按键背景颜色数组/
var colors = [“red”,”orange”,”yellow”,”green”,”cyan”,”blue”,”purple”];
/定义按键背景颜色数组指针/
var colorsPos = 0;

/定义按键显示字符数组/
var chars = [“`”,”1”,”2”,”3”,”4”,”5”,”6”,”7”,”8”,”9”,”0”,”-“,”=”,”backspace←”,”num lk”,”/”,”*”,”-“,//18
“tab”,”Q”,”W”,”E”,”R”,”T”,”Y”,”U”,”I”,”O”,”P”,”[“,”]”,”\”,”7”,”8”,”9”,”+”,//18
“caps lock”,”A”,”S”,”D”,”F”,”G”,”H”,”J”,”K”,”L”,”;”,”\’”,”enter?”,”4”,”5”,”6”,//16
“shift ?”,”Z”,”X”,”C”,”V”,”B”,”N”,”M”,”,”,”.”,”/”,”shift ?”,”Δ”,”1”,”2”,”3”,”enter”,//17
“ctrl”,”fn”,”?”,”alt”,” “,”alt”,”Ξ”,”ctrl”,”?”,”?”,” ?”,”0”,”.”//13
];

/定义按键显示字符数组指针/
var charsPos = 0;

/定义按键对应ASCII码值数组/
var asciis = [192,49,50,51,52,53,54,55,56,57,48,189,187,8,144,111,106,109,
9,81,87,69,82,84,89,85,73,79,80,219,221,220,103,104,105,107,
20,65,83,68,70,71,72,74,75,76,186,222,13,100,101,102,
16,90,88,67,86,66,78,77,188,190,191,16,38,97,98,99,13,
17,-1,91,18,32,18,93,17,37,40,39,96,110
];


DynamicCreateTable.js

/定义键盘每行个数数组/
var cols = [18,18,16,17,13];

/动态生成键盘/
var tab = new Array();
var row = 5;
var col = 19;
tab.push(“

”);
for (var i = 0; i < row; i++) {
tab.push(“”);
for (var j = 0; j < cols[i]; j++) {
if(i==0&&j==13){
tab.push(““);
continue;
}
if(i==1&&j==0){
tab.push(““);
continue;
}
if(i==1&&j==17){
tab.push(““);
continue;
}
if((i==2&&j==0)||(i==2&&j==12)){
tab.push(““);
continue;
}
if((i==3&&j==0)||(i==3&&j==11)){
tab.push(““);
continue;
}
if(i==3&&j==16){
tab.push(““);
continue;
}
if(i==4&&j==4){
tab.push(““);
continue;
}
if(i==4&&j==7){
tab.push(““);
continue;
}
tab.push(““);
“);
tab.push(““);
tab.push(chars[charsPos++]);
tab.push(““);
tab.push(“
“);
tab.push(“” );
tab.push(chars[charsPos++]);
tab.push(““);
tab.push(“
“);
tab.push(““);
tab.push(chars[charsPos++]);
tab.push(““);
tab.push(“
“);
tab.push(““);
tab.push(chars[charsPos++]);
tab.push(““);
tab.push(“
“);
tab.push(““);
tab.push(chars[charsPos++]);
tab.push(““);
tab.push(“
“);
tab.push(““);
tab.push(chars[charsPos++]);
tab.push(““);
tab.push(“
“);
tab.push(““);
tab.push(chars[charsPos++]);
tab.push(““);
tab.push(“
“);
tab.push(““);
tab.push(chars[charsPos++]);
tab.push(““);
tab.push(“
“);
tab.push(““);
tab.push(chars[charsPos++]);
tab.push(““);
tab.push(“

 

}
tab.push("");

}
tab.push(“”);
document.write(tab.join(“”));


MarqueeAndSplash.js

/实现跑马灯和闪屏效果/

/获取所有p标签对象/
var ps = document.getElementsByName(“pname”);
var psPos = 0;

/定时器2执行代码/
/*for (var i = 0; i < ps.length; i++) {
ps[i].style.backgroundColor = colors[colorsPos];
}
colorsPos++;
if(colorsPos==colors.length){
clearInterval(id2);
for (var i = 0; i < ps.length; i++) {
ps[i].style.backgroundColor = ‘black’;
}
}*/

/定时器2执行代码/
var code2 = “for (var i = 0; i < ps.length; i++) {“+
“ps[i].style.backgroundColor = colors[colorsPos];”+
“}”+
“colorsPos++;”+
“if(colorsPos==colors.length){“+
“clearInterval(id2);”+
“for (var i = 0; i < ps.length; i++) {“+
“ps[i].style.backgroundColor = ‘black’;”+
“}”+
“}”

/定时器1执行代码/
var on = 0;
var off = 0;
/*ps[off].style.backgroundColor = “black”;
ps[on].style.backgroundColor = colors[colorsPos];
off = on;
on++;
if(on==ps.length){
on = 0;
colorsPos++;
}
if(colorsPos==colors.length){
clearInterval(id1);
ps[ps.length-1].style.backgroundColor = “black”;
colorsPos=0;
var id2 = setInterval(code2,2000);
}*/

/定时器1执行代码/
var code1 = “ps[off].style.backgroundColor = ‘black’;”+
“ps[on].style.backgroundColor = colors[colorsPos];”+
“off = on;”+
“on++;” +
“if(on==ps.length){“+
“on = 0;”+
“colorsPos++;”+
“}”+
“if(colorsPos==colors.length){“+
“clearInterval(id1);”+
” ps[ps.length-1].style.backgroundColor = ‘black’;”+
“colorsPos=0;”+
“var id2 = setInterval(code2,1000);”+
“}”

/*
for (var i = 0; i < ps.length; i++) {
if(psPos==i)
ps[psPos].style.backgroundColor = colors[0];
else
ps[i].style.backgroundColor = colors[0];
}
psPos++;
if(psPos==ps.length)
psPos=0;*/

/*var code = “for (var i = 0; i < ps.length; i++) {“+
“if(psPos==i)”+
“ps[psPos].style.backgroundColor = colors[0];”+
“else{“+
“ps[i].style.backgroundColor = ‘black’;}”+
“}”+
“psPos++;”+
“if(psPos==ps.length)”+
“psPos=0;”*/
var id1 = setInterval(code1,20);


LightKeys.js

/按下按键,点亮对应按键;松开按键,熄灭对应按键/

var trkeyvalue = document.getElementById("showkeyvalueid");
var trascii = document.getElementById("showasciitrid");
var trchar = document.getElementById("showchartrid");
var trdchar = document.getElementById("showdchartrid");

trkeyvalue.innerHTML = "按键显示值";
trascii.innerHTML = "ASCII码值";
trchar.innerHTML = "字符值";
trdchar.innerHTML = "大写字符值";
var count = 0;

function getKey(){  
    count++;
    trascii.innerHTML +=  ""+ event.keyCode+"";
    trchar.innerHTML += ""+String.fromCharCode(event.keyCode)+"";
    trdchar.innerHTML += ""+String.fromCharCode(event.keyCode).toUpperCase()+"";

    for (var i = 0; i < asciis.length; i++) {           

        if (asciis[i]==event.keyCode) {
            trkeyvalue.innerHTML += ""+chars[i]+"";
            ps[i].style.backgroundColor = "deepskyblue";
            break;
        }
    }

// ps[70].style.backgroundColor = “deepskyblue”;//不会执行,因为fn按键不会触发事件

    if(count>=40){
        trkeyvalue.innerHTML = "按键显示值";
        trascii.innerHTML = "ASCII码值";
        trchar.innerHTML = "字符值";
        trdchar.innerHTML = "大写字符值";
        count = 0;
    }


}


function getKey2(){

        for (var i = 0; i < asciis.length; i++) {
            if(asciis[i]===event.keyCode){
                ps[i].style.backgroundColor = "black";
                return;
            }
        }
        alert("请打开数字锁定,否则无法正确识别数字开关所控按键!");
    }

注意事项

1.onkeydown与onkeypress的区别

onkeydown 对于键盘上的所有按键(除fn之外)都可以通过event.keycode获取其字节码值 ,且不支持中英文切换,统一输出大写字母
onkeypress 对于键盘上的部分按键可以通过event.keycode获取其字节码值 ,且支持中英文切换

2.数字锁定开与关的区别

数字锁定打开和关闭时,其所控按键输出的event.keycode不同

Tags:JA AV VA AW 
作者:网络 来源:SunshineXu
  • 上一篇:圣杯布局
  • 下一篇:响应式分栏