JavaScript将字母数组转换为数字

时间:2014-11-26 15:18:33

标签: javascript function innerhtml onmouseover

我一直在研究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循环中做错了什么?

2 个答案:

答案 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);
});

JSFIDDLE