我得到了以下错误
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)
}
事实上,这只是我正在使用的这个JavaScript文件的一部分,我不知道语法或其他方面是否有问题
你能帮我找到解决办法吗?
发布于 2019-05-31 04:52:50
改变这一点:
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
(没有尖括号)。
发布于 2019-05-31 04:52:43
代码似乎试图获得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)
https://stackoverflow.com/questions/56395418
复制