我的网站上安装了Google自定义搜索引擎。我想修改搜索结果。我知道它可能会伤害ToS。
所以,首先,我想从每个搜索结果中删除一些字符串。这是我之前写的函数:
<script type="text/javascript">
setInterval("pakeisti()",100)
function pakeisti()
{
elem = document.getElementById("searchas");
y = elem.getElementsByTagName("div");
for (i=0; i< y.length; i++)
{
str = y[i].className;
if (str.search("gs-title") != 0 ) {
var newHTML = y[i].innerHtml;
newHTML = newHTML.replace('STRING - ',' k');
newHTML = newHTML.replace('<a','<p');
newHTML = newHTML.replace('</a>','</p>');
y[i].innerHtml = newHTML; }
}
}
</script>
此前此脚本有效,但现在它给了我错误:
Uncaught TypeError: Cannot call method 'replace' of undefined
答案 0 :(得分:0)
发生错误是因为y[i].innerHtml
未定义。
要避免此问题,请将if
语句更改为:
if (str.search("gs-title") != 0 && y[i].innerHtml != null) {
您可能遇到此问题,因为您在String.search()
声明中错误地使用了if
。如果搜索字符串未出现在目标字符串中,.search()
将返回-1
,而不是0.(响应为0表示字符串出现在目标中的第一个字符处。)所以你可能的意思是:
if (str.search("gs-title") != -1 ...