我制作了一个为字母A-Z = 1-26赋值并将其求和的应用程序。 如何从输入字段中获取每个字母的值? 例如,如果我键入“ bb”,它将在范围内输出id为“ a”的b(2)+ b(2)= 4
https://codepen.io/anon/pen/pOvNXd
function myFunction() {
//code
var alp = {a:1, b:2, c:3, d:4, e:5, f:6, g:7, h:8, i:9, j:10, k:11, l:12, m:13, n:14, o:15, p:16, q:17, r:18, s:19, t:20, u:21, v:22, w:23, x:24, y:25, z:26, ' ':0, '"':0, "'":0, '!': 0, '#':0, '$':0, '%':0, '(':0, ')':0, '+':0, '-':0, '*':0, '/':0, '=':0, '_':0, '@':0, '?':0, '&':0, '.':0, ',':0, ':':0, ';':0}
//starting value
var str = document.getElementById("txt").value;
var n = str.length;
var total = 0;
//counter
for (var i = 0; i < str.length; i++)
total += alp[str[i]]
//output
document.getElementById("res").innerHTML = total;
document.getElementById("a").innerHTML = n;
}
<html>
<head>
<link href="https://fonts.googleapis.com/css?family=Roboto+Condensed" rel="stylesheet">
</head>
<body>
<div id="wrapper">
<center>
<h1>Task</h1><br>
<input type="text" name="fname" id="txt" style="width: 500px; font-size: 125%" size="60px" value="" placeholder="Type something..." oninput="myFunction()">
<br><br>
<p style="color: RGB(0,186,0)">Sum</p>
<span id="res" style="color: RGB(0,186,0)">0</span>
<br>
<p id="a">0</p>
</center>
</div>
</body>
</html>
答案 0 :(得分:0)
这是我的代码,所以我做了一些更改。
i++
,这使它无限。.split('')
,这将其转换为数组,以后将在您的代码str[i]
中使用。搜索StackOverflow之后,我发现了this answer:
您还可以使用普通数组访问每个字符及其索引 句法。但是请注意,字符串是不可变的,这意味着您 无法使用此方法设置字符的值,并且 IE7不支持(如果那对您仍然很重要)。
因此,即使您的代码可以直接使用str[i]
,我还是希望将其更改为数组,以防日后需要将其用作数组(编辑或类似的东西)上。
function myFunction() {
//code
var alp = {a:1, b:2, c:3, d:4, e:5, f:6, g:7, h:8, i:9, j:10, k:11, l:12, m:13, n:14, o:15, p:16, q:17, r:18, s:19, t:20, u:21, v:22, w:23, x:24, y:25, z:26, ' ':0, '"':0, "'":0, '!': 0, '#':0, '$':0, '%':0, '(':0, ')':0, '+':0, '-':0, '*':0, '/':0, '=':0, '_':0, '@':0, '?':0, '&':0, '.':0, ',':0, ':':0, ';':0};
//starting value
var str = document.getElementById("txt").value.split('');
var n = str.length;
var total = 0;
var result = "";
//counter
for (var i = 0; i < str.length; i++) {
total += alp[str[i]];
result += str[i] + "(" + alp[str[i]] + ") + ";
}
result = result.substr(0, result.length - 2) + " = " + total;
//output
document.getElementById("res").innerHTML = result;
document.getElementById("a").innerHTML = "Total: " + total;
}
body {
margin: 0px;
padding: 0px;
background-color: white;
color: black;
}
body,
input {
font-family: 'Roboto Condensed', sans-serif;
}
header input::-webkit-input-placeholder {
color: rgba(255, 255, 255, 0.8)
}
#txt {
color: rgba(0, 0, 0, 0.8);
border-radius: 1%;
transition: all 200ms ease-out;
box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.3);
}
#txt:hover {
box-shadow: 0 0 6px rgba(35, 173, 278, 1);
}
#txt:focus {
box-shadow: 0 0 6px rgba(35, 173, 278, 1);
}
#wrapper {
margin: 0px padding: 0px;
}
<html>
<head>
<link href="https://fonts.googleapis.com/css?family=Roboto+Condensed" rel="stylesheet">
</head>
<body>
<div id="wrapper">
<center>
<h1>Task</h1><br>
<input type="text" name="fname" id="txt" style="width: 500px; font-size: 125%" size="60px" value="" placeholder="Type something..." oninput="myFunction()">
<br><br>
<p style="color: RGB(0,186,0)">Sum</p>
<span id="res" style="color: RGB(0,186,0)">0</span>
<br>
<p id="a">0</p>
</center>
</div>
</body>
</html>
答案 1 :(得分:0)
从您的最后一条评论中,我相信您可能想要类似的东西:
s.count...
max
您可以使用已经具有的逻辑来计算总数,我只是不喜欢大对象。 不过请注意,这会解析(a-z)之外的其他值。
答案 2 :(得分:0)
为什么不为此使用ASCII值。 您可以从所有大写字母的ASCII值中减去64,并将ASCII值超出65-90的任何字符分配为0。
要获取ascii值,请使用“ A” .charCodeAt(0),它将返回65。
答案 3 :(得分:0)
因此,要建立所需的输出,可以使用字符串连接:
+
将结果连接起来并输出到dom
var expression = str.split('')
.map(function (currentLetter) {
return currentLetter + '(' + alp[currentLetter] + ')';
})
.join(' + ');
var expressionAndResult = expression + '=' + total;