我遇到以下错误
Uncaught TypeError: Cannot read property 'lang' of undefined
at ToolbarStrings.setLocale (toolbar-min.js:9)
at Object.start (toolbar-min.js:41)
at toolbar-min.js:41
ToolbarStrings.setLocale @ toolbar-min.js:9
start @ toolbar-min.js:41
(anonymous) @ toolbar-min.js:41
对于以下代码
function ToolbarStrings(){var a="EN";this.setLocale=function(){
var b=document.getElementsByTagName("<html>")[0],
c=document.getElementsByTagName("<body>")[0];
this.locale=(b.lang?b.lang:b.getAttribute("xml:lang")?b.getAttribute("xml:lang"):c.lang?c.lang:a).substr(0,2).toUpperCase(),
this.locale&&traduction[this.locale]||(this.locale=a),
this.ForceDefaultLocale&&(this.locale=this.ForceDefaultLocale)
}
实际上,这只是我正在使用的this JavaScript file的一部分, 我不知道语法是否有问题
您能帮我找到解决方法吗?
答案 0 :(得分:0)
该代码似乎正在尝试获取language declaration in your HTML。看起来像这样:
<html lang="en">
但是行document.getElementsByTagName("<html>")[0]
不返回任何内容,因此b.lang
失败的原因。您的文档中没有<<html>>
标记,因为getElementByTagName
在括号内 中查找该名称。您需要document.getElementsByTagName("html")
let htmlTags = document.getElementsByTagName("html");
let htmlTagsInExtraAngleBrackets = document.getElementsByTagName("<html>");
console.log('number of elements selected with "html"', htmlTags.length)
console.log('number of elements selected with "<html>"', htmlTagsInExtraAngleBrackets.length)
答案 1 :(得分:0)
更改此:
var b=document.getElementsByTagName("<html>")[0],
c=document.getElementsByTagName("<body>")[0];
对此:
var b=document.getElementsByTagName("html")[0],
c=document.getElementsByTagName("body")[0];
说明:
该错误表明您正在尝试对lang
的变量使用undefined
属性。这表明b
或c
变量未定义。
原因是因为它找不到标签名称为<html>
的元素,因为那是无效的。应该是html
(不带尖括号)。