Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在实现ECMAScript 5 InsertaCentHTML()函数时,用户定义的函数不是函数错误_Javascript_Ecmascript 5 - Fatal编程技术网

Javascript 在实现ECMAScript 5 InsertaCentHTML()函数时,用户定义的函数不是函数错误

Javascript 在实现ECMAScript 5 InsertaCentHTML()函数时,用户定义的函数不是函数错误,javascript,ecmascript-5,Javascript,Ecmascript 5,我正在做的是使用纯javascript生成一个post导航。但它在关闭标签之前显示,标签不是一个函数 在下面的工具功能中,它应该是一个函数,因为我在将标记作为函数关闭之前编写了代码。 在代码段中,它可以生成ul列表,但如果您通过web inspector查看,仍然可以找到: **Uncaught TypeError: greatApp.tools.insertHTMLString.beforeClosingTag is not a function** 除此之外,在我当地的环境中,相同的代码,

我正在做的是使用纯javascript生成一个post导航。但它在关闭标签之前显示,标签不是一个函数

在下面的工具功能中,它应该是一个函数,因为我在将标记作为函数关闭之前编写了代码。 在代码段中,它可以生成ul列表,但如果您通过web inspector查看,仍然可以找到:

**Uncaught TypeError: greatApp.tools.insertHTMLString.beforeClosingTag is not a function**
除此之外,在我当地的环境中,相同的代码,但它甚至不能显示ul列表,我不知道为什么。谢谢

//全局工具函数(insertHTMLString.beforeClosingTag)
var greatApp=greatApp | |{};
(功能(){
greatApp.tools={
insertHTMLString:函数(){
/*****
如果元素有一个本机insertAdjacentHTML:在四个具有更合理名称的html插入函数中使用它
*****/
if(document.createElement('div').insertAdjacentHTML){
返回{
beforeOpeningTag:函数(元素,htmlString){
元素insertAdjacentHTML('beforebeagin',htmlString);
},
afterOpeningTag:函数(元素,htmlString){
元素insertAdjacentHTML('afterbegin',htmlString);
},
beforeClosingTag:函数(元素,htmlString){
元素insertAdjacentHTML('beforeend',htmlString);
},
afterClosingTag:函数(元素,htmlString){
元素。insertAdjacentHTML('afterend',htmlString);
}
}
}//如果结束
/********
否则,我们就没有本机insertAdjacentHTML:实现相同的四个插入函数,然后使用它们来定义insertAdjacentHTML
******/
函数片段(htmlString){
var ele=document.createElement('div');
var frag=document.createDocumentFragment();
ele.innerHTML=htmlString;
//将所有节点从ele移动到frag
while(ele.firstChild)
第二个子女(第一个子女除外);
返回碎片;
}        
var insertHTMLString={
beforeOpeningTag:函数(元素,htmlString){
element.parentNode.insertBefore(片段(htmlString),元素);
},
afterOpeningTag:函数(元素,htmlString){
element.parentNode.insertBefore(片段(htmlString),element.firstChild);
},
beforeClosingTag:函数(元素,htmlString){
元素.parentNode.appendChild(片段(htmlString));
},
afterClosingTag:函数(元素,htmlString){
element.parentNode.insertBefore(片段(htmlString),element.nextSibling);
}                
};
/**
现在基于上述函数实现insertAdjacentHMTL
**/
Element.prototype.insertAdjacentHMTL=函数(pos,htmlString){
开关(位置toLowerCase()){
案例“beforebeaging”:返回insertHTMLString.beforeOpeningTag(此,htmlString);
案例“afterbeging”:返回insertHTMLString.afterOpeningTag(此,htmlString);
case“beforeend”:返回insertHTMLString.beforeClosingTag(this,htmlString);
案例“afterend”:返回insertHTMLString.beforeClosingTag(此,htmlString);
}
};
回位插入器;
},
}}());
//邮政js
(功能(){
var titles=document.queryselectoral('.sideNav h3');
var sideList=document.getElementsByClassName('sideList')[0];
var ul=document.queryselectoral('.sideList ul')[0];
对于(变量i=0;i';
(Element.prototype.insertAjacentHTML)?ul.insertAjacentHTML('beforeend',li):greatApp.tools.insertHTMLString.beforeClosingTag(ul,li);
}   
}());

#更新
#家
#论坛
    页面导航


这是因为,
插入tmlstring
是一个函数而不是对象。您可以创建一个对象,如:

var innerHTMLObj = new greatApp.tools.insertHTMLString();    
(Element.prototype.insertAjacentHTML) ?
  ul.insertAdjacentHTML('beforeend', li): 
  innerHTMLObj.beforeClosingTag(ul, li);
当然,你可以用
iLife
替换它

对象实现
//全局工具函数(insertHTMLString.beforeClosingTag)
var greatApp=greatApp | |{};
(功能(){
greatApp.tools={
insertHTMLString:函数(){
/*****
如果元素有一个本机insertAdjacentHTML:在四个具有更合理名称的html插入函数中使用它
*****/
if(document.createElement('div').insertAdjacentHTML){
返回{
beforeOpeningTag:函数(元素,htmlString){
元素insertAdjacentHTML('beforebeagin',htmlString);
},
afterOpeningTag:函数(元素,htmlString){
元素insertAdjacentHTML('afterbegin',htmlString);
},
beforeClosingTag:函数(元素,htmlString){
元素insertAdjacentHTML('beforeend',htmlString);
},
afterClosingTag:函数(元素,htmlString){
元素。insertAdjacentHTML('afterend',htmlString);
}
}
}//如果结束,则结束
/********
否则,我们没有本机insertAdjacentHTML:实现相同的四个插入函数,然后使用它们来定义