【发布时间】:2014-02-16 20:50:50
【问题描述】:
我想我一定是错误地搜索了这个,因为我还没有找到任何解决方案。我正在使用 wiris 编辑器来允许用户创建富文本区域,然后由其他用户填充。 wiris 的每个实例都有一个基于已创建的编辑器数量的动态填充名称。 $t 只是一个计数器。
editor<?php echo $t ?> = com.wiris.jsEditor.JsEditor.newInstance({'language': 'en'});
然后我需要检索每个特定编辑器的内容。
如果我输入文字对象名称
var ml = editor3.getMathML();
一切正常,但是当我尝试使用变量来访问动态创建的对象名称时
var dynamicName = 'editor'+t;
var ml = dynamicName.getMathML();
我收到以下错误:
Uncaught TypeError: Object editor3 has no method 'getMathML'
如何使用dynamicName中创建的字符串来调用editor3对象?
【问题讨论】:
-
dynamicName是一个字符串。您需要使用eval之类的东西来让 javascript 评估(并执行)命令。你可以试试var editor = eval(dynamicName); editor.getMathML();之类的东西。它可能会起作用。但是要小心eval,因为如果有人可以在其中注入讨厌的javascript,它将被执行。 -
另一个想法 - 你在标题中提到了 jQuery。是否有其他方法可以使用 dom 选择器访问编辑器?你可能最好做类似
var editor_selector = '#id_of_editor' + t; var ml = $(editor_selector).getMathML()的事情。如果没有看到编辑器是如何设置的以及 jQuery 插件是如何工作的,我不确定这是否可行。但如果可以的话,这种方法会比我上面建议的eval更安全。 -
谢谢,eval 成功了。我将尝试像您提到的那样找到适合我的条件的解决方法,但是正在评估的 t 变量是计数器,而不是输入字段,因此我设法使用 eval 使其安全。
-
你不使用数组的原因是什么?