无法读取ToolbarStrings.setLocale上未定义的属性“ lang”

时间:2019-05-31 12:48:31

标签: javascript

我遇到以下错误

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的一部分, 我不知道语法是否有问题

您能帮我找到解决方法吗?

2 个答案:

答案 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属性。这表明bc变量未定义。

原因是因为它找不到标签名称为<html>的元素,因为那是无效的。应该是html(不带尖括号)。