JavaScript TypeError:无法读取未定义的Exchange消息的属性'indexOf'

时间:2018-10-25 16:55:01

标签: javascript jquery

我要替换某些系统语言的页面上包含以下脚本。

<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'。

2 个答案:

答案 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之前。