2017-10-28 24 views
0

我一直在搜索网络,并且发现了一些关于我当前问题的示例,并且所有这些示例似乎都是针对相同的主题:解密文本。但我找不到用JavaScript编写的任何东西。我给它一个镜头,但当我试图将字符串转换为数组时,我被卡住了。将字母从输入切换到alpabhet

可以说,目前的字母是

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

这里有一个生活和工作的例子,用一个检查,以便用-1将字母'a'转换为字母'ö',-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++) { 
 
\t values[inputs[i].name] = inputs[i].value; 
 
} 
 
function outputText(number){ 
 
    var newtext = []; 
 
\t var inputtext = document.getElementById('text_to_be_shifted').value.split(''); 
 
    inputtext.forEach(letter=> { 
 
\t \t \t var ind_ofLetter = alpabhet.indexOf(letter); 
 
\t \t ind_ofLetter = ind_ofLetter + number; 
 
\t \t if (ind_ofLetter < 0){ 
 
\t \t ind_ofLetter = alpabhet.length + ind_ofLetter; 
 
\t \t }else if(ind_ofLetter > alpabhet.length-1){ 
 
\t \t ind_ofLetter = ind_ofLetter - alpabhet.length; 
 
\t \t } 
 
\t \t newtext.push(alpabhet[ind_ofLetter]); 
 
    }); 
 
    document.getElementsByClassName('output')[0].innerHTML = newtext.join(''); 
 
} 
 

 
function shiftUp() { 
 
\t var currentShift = document.getElementById('currentShift'); 
 
\t var number = currentShift.innerHTML; 
 
\t number++; 
 
\t currentShift.innerHTML = number; 
 
\t outputText(number); 
 
} 
 

 
function shiftDown() { 
 
\t var currentShift = document.getElementById('currentShift'); 
 
\t var number = currentShift.innerHTML; 
 
\t number--; 
 
\t currentShift.innerHTML = number; 
 
\t outputText(number); 
 
} 
 

 
document.onkeydown = checkKey; 
 

 
function checkKey(e) { 
 

 
\t e = e || window.event; 
 

 
\t if (e.keyCode == '37') { 
 
\t console.log('left arrow') 
 
\t shiftDown() 
 
\t } 
 
\t else if (e.keyCode == '39') { 
 
\t \t console.log('right arrow') 
 
\t \t shiftUp() 
 
\t } 
 

 
}
<b>Current shift: </b><span id="currentShift">0</span> 
 

 
<br><input id="text_to_be_shifted" type="text"> 
 
<div id='output' class="output"></div>

0

只有一个输入,所以在循环中没有任何意义。

要得到一个数组,你应该使用类似:

document.getElementById('text_to_be_shifted').split(""); 

然后,您可以使用地图功能的元素

let arr = document.getElementById('text_to_be_shifted').split(""); 

let shifted = arr.map((c) => alpabhet[(alpabhet.indexOf(c) + 1) % alpabhet.length]).join(""); 
0

转移在你的循环,你可以利用的charAt( )函数来获取给定索引处的单个字符。 W3学校都有,如果需要此功能一个很好的教训:https://www.w3schools.com/jsref/jsref_charat.asp

var inputArray = []; 
var inputs = document.getElemenById('text_to_be_shifted'); 
for(let i = 0; i < inputs.length; i++){ 
    inputArray[i] = inputs.charAt(i); 
} 

像这样的东西应该工作,让你与每个索引在单个字母的排列。