Javascript.replacement在特定服务器上失败

Javascript .replace fails on specific server

本文关键字:服务器 失败 replacement Javascript      更新时间:2023-09-26

我的一些Javascript遇到了问题,当连接到localhost时,它在我的笔记本电脑上似乎可以正常工作,但当代码放在远程服务器上,并且我从同一台笔记本电脑和浏览器(IE11)连接到该服务器时,它就不能正常工作了。相关代码片段为:

      var wktxt = inputs[i].getAttribute( "ondblClick" );
      wktxt = wktxt.replace("(" + rowno,  "(" + rowcnt)
      inputs[i].setAttribute( "ondblClick", wktxt );
      inputs[i].style.backgroundImage = "url()";  

它在第二行失败,返回"Object不支持属性或方法'replace'",但问题并没有在本地解决,并且行为完全符合预期(这是在HTML表中克隆行的某些逻辑的一部分)。当我启动故障调试时,wktxt包含"function ondblclick(){AddNotes2(1,0)}",rowno为1,rowcnt为7。

有什么想法吗?这段代码是在循环中执行的——这与每次迭代中重新执行的var声明有什么关系吗?

因为replace方法是字符串对象原型的一部分。看起来var wktxt的结果可能并不总是等于一个字符串。要测试这一点,您可以使用typeof语句。类似的东西

if (typeof wktxt === 'string') {
    wktxt = wktxt.replace("(" + rowno,  "(" + rowcnt)
    inputs[i].setAttribute( "ondblClick", wktxt );
    inputs[i].style.backgroundImage = "url()";
}
else {
    //write some code here to put whatever you want in wktxt should it fail to evaluate to
    // a string
}