2016-07-25 44 views
0

正如您在下面看到的,我设法写了一个js公式,允许我检索在我的网站上选择的语言访问者。JS:获得一个值,然后返回一个数字

最后,我想更进一步:一旦选定的语言已被检索,我希望公式为每种语言返回一个数字。 例如,如果选择的语言是“en”,我希望脚本返回“1”。

你能帮我改进这个脚本吗?

tC.internalvars.metalanguage = ""; 
var metas = document.getElementsByTagName('meta'); 
for (var i=0; i<metas.length; i++) { 
    if (typeof metas[i].getAttribute("http-equiv") != "undefined" && metas[i].getAttribute("http-equiv") == "Content-Language" && typeof metas[i].getAttribute("content") != "undefined" && metas[i].getAttribute("content") !== "") { 
    tC.internalvars.metalanguage = metas[i].getAttribute("content"); 
    } 
} 
+0

看来上面的脚本已被切断:tC.internalvars.meta language =“”; var metas = document.getElementsByTagName('meta'); (var i = 0; i

+0

你应该如何将数字与语言联系起来?除了“en”是1,你如何确定与其他人相关联? – kamoroso94

+0

相信你应该提供一个映射对象: VAR langmap的= { 'EN':1, '德':2, //等 } 并返回映射值: 返回langmap的[值]是你的“EN”字符串 –

回答

0

当你发现你的语言,你刚才停止这样的循环:

for (var i=0; i<metas.length; i++) { 
    if (typeof metas[i].getAttribute("http-equiv") != "undefined" && metas[i].getAttribute("http-equiv") == "Content-Language" && typeof metas[i].getAttribute("content") != "undefined" && metas[i].getAttribute("content") !== "") { 
    tC.internalvars.metalanguage = metas[i].getAttribute("content"); 
    // now you find the language and break here 
    break; 
    } 
} 

这样,你跳过其他元素,你不需要任何更多的在这里。

关于映射,一个快速的方法是在你的主要范围,定义一个普通的对象,那就是像一个哈希表:

var langCode = languages[tC.internalvars.metalanguage]; 

var languages = { 
    "en": 1, 
    "it": 2, 
    // ... so on 
} 

所以,你可以用得到的语言代码

或者你可以从一个函数中返回值:

return languages[tC.internalvars.metalanguage]; 
相关问题