gpt4 book ai didi

javascript - 代码片段在程序化时有效,但在转换为模块化时无效

转载 作者:行者123 更新时间:2023-11-28 10:33:10 25 4
gpt4 key购买 nike

function sc_HTMLParser(aHTMLString){
var parseDOM = content.document.createElement('div');
parseDOM.appendChild(Components.classes['@mozilla.org/feed-unescapehtml;1']
.getService(Components.interfaces.nsIScriptableUnescapeHTML)
.parseFragment(aHTMLString, false, null, parseDOM));
return parseDOM;
}

变成了

this.HTMLParser = function(aHTMLString){
var parseDOM = content.document.createElement('div');
parseDOM.appendChild(Components.classes['@mozilla.org/feed-unescapehtml;1']
.getService(Components.interfaces.nsIScriptableUnescapeHTML)
.parseFragment(aHTMLString, false, null, parseDOM));
return parseDOM;
}

searchcontents = req.responseText;
parsedHTML = sc_HTMLParser(searchcontents);
sitefound = sc_sitefound(compareuris, parsedHTML);

变成了

searchcontents = req.responseText;
alert(searchcontents);
parsedHTML = this.HTMLParser(searchcontents);
alert(parsedHTML);
sitefound = this.sitefound(compareuris, parsedHTML);

模块化代码会提醒搜索内容,但不会提醒已解析的HTML。为什么?怎么解决?

更新:

j0rd4n,它是:

function SiteCompare() {
this.finishSiteCompare = function(downloaduris, compareuris, tryinguri) {
// code
searchcontents = req.responseText;
alert(searchcontents);
parsedHTML = this.HTMLParser(searchcontents);
alert(parsedHTML);
sitefound = this.sitefound(compareuris, parsedHTML);
// code
}
this.HTMLParser = function(aHTMLString) {
//code
}
}

甚至没有调用电话。

更新:

错误控制台显示 this.HTMLParser 不是一个函数

最佳答案

问题是 this 在函数定义和调用时并不相同。当定义 HTMLParser 时,这是 SiteCompare 对象,当调用 this.HTMLParser(searchContents) 时,this可能是窗口对象。因此,您收到的错误意味着 window.HTMLParser 不是一个函数。

要解决此问题,您需要在 SiteCompare 对象之外定义 HTMLParser 方法,或者(可能更好)使用 SiteCompare调用 HTMLParser 的对象。示例:

var parser = new SiteCompare();
parsedHTML = parser.HTMLParser(searchcontents);

关于javascript - 代码片段在程序化时有效,但在转换为模块化时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2434958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com