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

问题描述:

我遇到了一些Javascript问题,它似乎在连接到本地主机时可以在我的笔记本电脑上正常工作,但不会在代码放在远程服务器上时连接到同一台笔记本电脑和浏览器(IE11)。相关的代码片段是:Javascript .replace在特定服务器上失败

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

它在第二行失败,“对象不支持属性或方法‘取代’”,但问题不是在本地打,准确地按照预期的行为(这是部分一些克隆HTML表格中的行的逻辑)。当我启动调试失败时,wktxt包含“function ondblclick(){AddNotes2(1,0)}”,rowno是1,rowcnt是7.

任何想法?这段代码是在一个循环内执行的 - 是否可以在每次迭代时重新执行var声明?

+0

你怎么做'替换'功能?或者它只是一个包含该函数声明的sting。您可以在赋值给它之后尝试使用console.log'typeof wktxt'吗? – banzsh 2014-08-27 09:58:31

+0

你确定'inputs [i]'有这个属性'“ondblClick”'? – Grundy 2014-08-27 10:09:15

+0

我是一个Javascript新手,但我想要替换的参数是传递给函数的参数 - 即AddNotes2(1,0)变成AddNotes2(7,0)。据推测,如果wktxt在调试中包含文本,那么这意味着该属性存在。此代码仅针对应具有该属性的特定数量字段执行。 – JustNod 2014-08-27 10:19:00

由于替换方法是字符串对象原型的一部分。看起来你的var wktxt的结果可能并不总是等于一个字符串。要测试这个,你可以使用typof语句。像

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 
} 
+0

我会给这个尝试并报告回来,谢谢。 – JustNod 2014-08-27 10:20:24

+0

在一台服务器上运行时typeof是'string',另一台服务器上是'function'。任何想法为什么这可能会发生? – JustNod 2014-08-27 14:17:32