javascript会自动关闭字符串中的标签

时间:2014-01-01 16:37:48

标签: javascript

这是一个非常奇怪的问题

statements[bracket].assembly+='<expr operator="'+statements[bracket].firsthalf.mathoperator+'"><constant value="'+statements[bracket].firsthalf.constant+'" /><parameter name="'+statements[bracket].secondhalf.parameter+'"/></expr>'

statements[bracket].firsthalf.constant=2,邮件应显示为<constant value="2" />,但标记显示为<constant value="2"></constant>,知道标签自动关闭的原因吗?!

enter image description here

2 个答案:

答案 0 :(得分:2)

您必须已将表达式传递到字符串被视为HTML的某个位置(例如innerHTML)。问题不在于您显示的字符串操作代码,而在于其他地方。

在您评估此表达式与提醒语句的时间之间会发生什么?

答案 1 :(得分:1)

代码不会生成您显示的输出。您实际上是在使用其他代码,或者在显示它之前使用字符串(比如将其解析为XML)。

我提供了这些数据的代码:

var bracket = 0;
var statements = [
    { assembly: '', operator: 'greater',
     firsthalf: { mathoperator: '*', constant: '2', parameter: '' },
     secondhalf: { mathoperator: '', constant: '2', parameter: '' }
    } ];

这使代码警告此字符串,如预期的那样:

<greater><expr operator="*"> <constant value="2" /> <parameter name=""/> </expr><parameter name=""/></greater>

演示:http://fiddle.jshell.net/AMnLS/1/