我要替换某些系统语言的页面上包含以下脚本。
<script>
function xchangemessage2()
{
xval = jQuery('[ID*="_UserMessageText"]').html();
xvalpos = xval.indexOf("We could not find your information in our system. Please search again or contact us for assistance.");
xvallen = xval.length;
if (xvalpos > 0)
{
jQuery('[ID*="_UserMessageText"]').html(xval.substring(0, xvalpos+xvallen) + ' If you provided a valid user name, an email will be sent to the email address on file.')
}
}
Sys.Application.add_load(xchangemessage2);
</script>
我不断得到
Javascript TypeError:无法读取未定义的属性'indexOf'。
答案 0 :(得分:0)
TypeError :当值不是预期类型时, TypeError 对象表示错误。
您正在尝试访问变量indexOf
的属性xval
,即undefined
。
String.prototype.indexOf() : indexOf()方法返回第一次出现指定值的调用String对象中的索引,从fromIndex开始搜索。如果找不到该值,则返回-1。
Array.prototype.indexOf() : indexOf()方法返回可以在数组中找到给定元素的第一个索引;如果为,则返回-1。不存在。
undefined :全局 undefined 属性表示原始值undefined
。它是JavaScript的原始类型之一。
由于undefined
对象不是字符串或数组,因此使用indexOf()
方法会产生错误。由于在DOM中找不到ID为xval
的HTML元素,因此undefined
的值为_UserMessageText
。
建议先使用JavaScript documentation,然后再使用它的功能以避免错误并最好使用JavaScript。
也结帐jQuery features。
答案 1 :(得分:0)
TypeError和script标记表示在加载HTML代码之前,JS正在运行。要解决此问题,只需将脚本标签放在body元素的最底部,以便将其余HTML加载到JS之前。