【问题标题】:Caesar Cipher in html using javascript (with ASCII codes) help required需要帮助在 html 中使用 javascript(带有 ASCII 码)的 Caesar Cipher
【发布时间】:2016-07-13 00:33:31
【问题描述】:

我无法让此代码正常工作。我更熟悉 python - javascript 新手。这就是我的 python 等价物的样子:

   userinput = input("Enter the message you want to encryppt: ")
   shift = int(input("How many letters do you want to shift by? "))
   empty = ""

   for char in userinput:
   a = ord('a') if char.islower() else ord('A')
   if char.isalpha():
    firstord = ord(char) - a
    realord = firstord + shift
    realord = realord % 26
    realord = realord + a
    alpha = (chr(realord))
    empty = empty + alpha
   else:
    notalpha = ("?")
    empty = empty + notalpha
  print(empty)

以下是 javascript 版本 - 我使用过 cmets。我也设置了一些不同的东西。 (最后一个块是 html)由于某种原因,它只显示按钮和输入框 - 但没有显示输出。

感谢您的帮助

<script> 

function enterName(){


	var userName = document.getElementById("word_in").value;        //get the input string from the page
	var shiftBy = Number(document.getElementById("shift").value);	//get the  amount of shift and convert it into a number. This Is IMPORTANT
	var size= userName.length;										//get the size of the input string
	var encrypt="";
	var temp = 0;
	var i=0;
	
	//step through the string 1 character at a time
	for (i=0; i<size; i++){
	
	//store the ASCII value of each character
		temp=userName.charCodeAt(i){

		// Uppercase
		if ((temp >= 65) && (temp <= 90)){
			temp = (((temp - 65 + shiftBy) % 26) + 65);
		}

		// Lowercase
		else if ((temp >= 97) && (temp <= 122)){
			temp = (((temp - 97 + shiftBy) % 26) + 97);
		}

		else {
			temp = "?";
		}
			
		}
		encrypt += String.fromCharCode(temp)	
	}	
		
	//output to the page
	document.getElementById("word_out").innerHTML = encrypt;

}

</script>
<body>
<p>Please enter your name:</p>
<input id="word_in">
<p>Please enter the shift:</p>
<input id = "shift">
<button type = "button" onclick="enterName()"></button>
<p id = "word_out"></p>
</body>

【问题讨论】:

    标签: javascript python html scripting interactive


    【解决方案1】:

    你有一个打开的大括号和一个关闭的大括号太多了。见评论。

    function enterName() {
        var userName = document.getElementById("word_in").value;        //get the input string from the page
        var shiftBy = Number(document.getElementById("shift").value);   //get the  amount of shift and convert it into a number. This Is IMPORTANT
        var size = userName.length;                                     //get the size of the input string
        var encrypt = "";
        var temp = 0;
        var i = 0;
    
        //step through the string 1 character at a time
        for (i = 0; i < size; i++) {
    
            //store the ASCII value of each character
            temp = userName.charCodeAt(i); //{ <------------------------------------ too much
    
            // Uppercase
            if ((temp >= 65) && (temp <= 90)) {
                temp = (((temp - 65 + shiftBy) % 26) + 65);
            }
    
                // Lowercase
            else if ((temp >= 97) && (temp <= 122)) {
                temp = (((temp - 97 + shiftBy) % 26) + 97);
            }
    
            else {
                temp = "?";
            }
    
            //} <------------------------------------------------------------------- too much
            encrypt += String.fromCharCode(temp);
        }
    
        //output to the page
        document.getElementById("word_out").innerHTML = encrypt;
    }
    <p>Please enter your name:</p>
    <input id="word_in">
    <p>Please enter the shift:</p>
    <input id="shift">
    <button type="button" onclick="enterName()"></button>
    <p id="word_out"></p>

    【讨论】:

    • 认为它可能是这样简单的 - 谢谢
    【解决方案2】:

    我在这里创建了一个工作示例: https://jsfiddle.net/w4rafn1j/2/

    以下行后面需要一个分号而不是一个块,因为它是一个函数调用:

    temp=userName.charCodeAt(i);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 2010-10-26
      • 2013-07-17
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多