0

嗨,我是 java 脚本的新手。在传递值包含连字符作为函数参数的字符串变量时遇到问题。Fire bug 引发错误,提示“标识符在数字文字后立即开始”

我正在使用 flexigrid 来显示数据。在每一行都放置了一个图像。单击该图像时,应调用 java 脚本函数。flexigrid记录内容的设置是在java中完成的,如下所示,

record.put("view","<img src='images/ic_text_document.png' onclick='view_content("+objid+")'/> ");

变量 objid 的值类似于 c2692d22-a407-4d38-85ee-5c16f25bcce7。Firebug 通过指向第 14 位(在上面的示例中为 4)在数字文字错误之后立即引发标识符。

尝试按照其他帖子中的建议使用不同的引号组合传递变量,但效果很好。有人可以帮我吗?

4

3 回答 3

1

您需要在生成 html 之前转义 objid,并在使用 javascript 中的值时取消转义。

或者做这样的事情......

record.put("view","<img src='images/ic_text_document.png' onclick='view_content("+ COUNTER + ")'/><div style='display:none' id='objid"+ COUNTER + "'>" + objid + "</div> ");

其中 counter 只是每个 obj/objid 的不同数字/值。在js中:

function view_content(objidcounter){    
var real_objid = document.getElementById('objid' + objidcounter).innerText;
...
...

}
于 2012-04-10T12:17:39.717 回答
0

您应该引用该objid值,例如

record.put("view","<img src='images/ic_text_document.png' onclick='view_content(\""+objid+"\")'/> ");
于 2012-04-10T11:58:22.947 回答
0

因为当它渲染时它显示为

view_content(FOOBARSTRING)

你需要那里的报价。

record.put("view","<img src='images/ic_text_document.png' onclick='view_content(\""+objid+"\")'/> ");

理想情况下,您不会直接在 html 标记中添加 onclick 处理程序。

于 2012-04-10T11:59:41.217 回答