我一直在网上搜索,我找到了一些关于我当前问题的例子,所有这些似乎都在解决同一个话题:解密文本。但我找不到任何用javascript编写的东西。我试了一下,但是当我尝试将字符串转换为数组时,我被卡住了。
让我们说当前的字母是
var alpabhet=[
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','å','ä','ö'
];
我有一个字符串ammj
,我在输入中输入。然后我希望能够使用左右键移动并查看当前班次的输出。因此,两(2)的移位将导致字符串cool
。字符串åjjg
的班次为5也会产生cool
。
所以我主要担心的是,如何使用javascript将用户输入转换为数组?
我有一个输入文件:<input id="text_to_be_shifted" type="text">
然后我试图循环输入并排列成一个数组
var values = {};
var inputs = document.getElementById('text_to_be_shifted');
for( var i = 0; i < inputs.length; i++ ) {
values[inputs[i].name] = inputs[i].value;
}
看看我的小提琴:http://jsfiddle.net/p8kqmdL1/
答案 0 :(得分:0)
只有一个输入,所以循环没有意义。
要获得数组,您应该使用类似:
document.getElementById('text_to_be_shifted').split("");
然后,您可以使用map函数来移动元素
let arr = document.getElementById('text_to_be_shifted').split("");
let shifted = arr.map((c) => alpabhet[(alpabhet.indexOf(c) + 1) % alpabhet.length]).join("");
答案 1 :(得分:0)
var inputArray = [];
var inputs = document.getElemenById('text_to_be_shifted');
for(let i = 0; i < inputs.length; i++){
inputArray[i] = inputs.charAt(i);
}
这样的事情应该可以让你得到一个在每个索引上都有一个字母的数组。
答案 2 :(得分:0)
这里有一个实时和有效的例子,带有一个支票,以便将字母“a”换成-1,将其转换为字母“ö”,-2到“ä”e.t.c的最后一个字母。并用1替换最后一个字母表将它设置为'a',用2到'b'e.t.c:
var alpabhet=[
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','å','ä','ö'
];
var values = {};
var inputs = document.getElementById('text_to_be_shifted');
for( var i = 0; i < inputs.length; i++ ) {
values[inputs[i].name] = inputs[i].value;
}
function outputText(number){
var newtext = [];
var inputtext = document.getElementById('text_to_be_shifted').value.split('');
inputtext.forEach(letter=> {
var ind_ofLetter = alpabhet.indexOf(letter);
ind_ofLetter = ind_ofLetter + number;
if (ind_ofLetter < 0){
ind_ofLetter = alpabhet.length + ind_ofLetter;
}else if(ind_ofLetter > alpabhet.length-1){
ind_ofLetter = ind_ofLetter - alpabhet.length;
}
newtext.push(alpabhet[ind_ofLetter]);
});
document.getElementsByClassName('output')[0].innerHTML = newtext.join('');
}
function shiftUp() {
var currentShift = document.getElementById('currentShift');
var number = currentShift.innerHTML;
number++;
currentShift.innerHTML = number;
outputText(number);
}
function shiftDown() {
var currentShift = document.getElementById('currentShift');
var number = currentShift.innerHTML;
number--;
currentShift.innerHTML = number;
outputText(number);
}
document.onkeydown = checkKey;
function checkKey(e) {
e = e || window.event;
if (e.keyCode == '37') {
console.log('left arrow')
shiftDown()
}
else if (e.keyCode == '39') {
console.log('right arrow')
shiftUp()
}
}
<b>Current shift: </b><span id="currentShift">0</span>
<br><input id="text_to_be_shifted" type="text">
<div id='output' class="output"></div>