我一直在研究JavaScript中的一个函数,它可以置换mouseenter上单词中的字母。我无法通过第一步,即将字母转换为数字以增加其值。首先我试过了:
function permuter1(){
var polygon=document.getElementById("permutable").innerHTML;
polygon = polygon.toLowerCase();
polygon.split("");
var converter = {a:0,b:1, c:2,d:3,e:4,f:5,g:6,h:7,i:8,j:9,k:10,l:11,m:12,n:13,o:14,p:15,q:16,r:17,s:18,t:19,u:20,v:21,w:22,x:23,y:24,z:25};
for (index=0; index<polygon.length;index++) {
polygon[index] = converter[polygon[index]];
}
用于测试我一直只使用:
document.getElementById("permutable").innerHTML = polygon[0];
在html中我有:
<ul>
<li id = "permutable" onmouseenter="permuter1()" onmouseleave="unpermute1()">Browse</li>
</ul>
我希望mouseover会给我1,但我得到了b。所以我试过了:
for (index=0; index<polygon.length;index++) {
polygon[index]=polygon[index].charCodeAt();
}
结果相同。我甚至尝试过:
var str = "";
for (index=0; index<polygon.length;index++) {
str=str +polygon[index];
}
for (index=0; index<polygon.length;index++) {
polygon[index] = str.charCodeAt(index);
}
结果相同!我测试了一切到for循环,并知道它的工作。我在for循环中做错了什么?
答案 0 :(得分:1)
polygon.split("");
返回一个数组。您必须将其分配给某些东西才能使用它。也许你想要:
polygon = polygon.split("");
仅供参考,您可以像这样链接一些电话:
polygon = polygon.toLowerCase().split("");
此外,您的函数permuter1()
不会对其计算的结果执行任何操作以使其可见。如果要在网页中看到它,则必须将数组重新连接到一个类似polygon.join("")
的字符串中,然后将其分配回某些DOM元素的.innerHTML
。
答案 1 :(得分:0)
正如@jfriend00所说,split返回一个数组,你必须对结果做一些事情。你可以这样做:
var polygon=$("#permutable").html();
polygon = polygon.toLowerCase();
var polygonArray=polygon.split("");
var converter = {a:0,b:1, c:2,d:3,e:4,f:5,g:6,h:7,i:8,j:9,k:10,l:11,m:12,n:13,o:14,p:15,q:16,r:17,s:18,t:19,u:20,v:21,w:22,x:23,y:24,z:25};
var result="";
for (index=0; index<polygon.length;index++) {
if(converter[polygonArray[index]]){
result=result+converter[polygonArray[index]];
console.log(result);
}
}
if(result)$("#permutable").html(result);
});