将HTML存储到javascript变量中
问题描述:
我在使用某些javascript时遇到了一些麻烦。我使用jQuery来动态地将行 添加到表中。此外,JavaScript是从一些PHP和Kohana代码生成的。将HTML存储到javascript变量中
这是脚本。
<script type="text/javascript">
function delExtensionNumber(element){
$(element).prev().attr('value', 'X');
$(element).parent().parent().hide();
}
function addExtensionNumber(){
lines = <?php echo form::dropdown($ext_id."[did]", $lines, ''); ?>;
extensions = <?php echo form::dropdown($ext_id."[extension]", $phones, ''); ?>;
$('#line-extensions > tbody:last').append('<tr><td>'+lines+'</td><td>'+extensions+'</td><td><input type="hidden" name="'+<?php echo $ext_id;?>+'[state]" value="0" /><a class="hide" onclick="delExtensionNumber(this)"></a></td></tr>');
<?php $ext_id++; ?>
}
</script>
这在Firefox中正常工作。但在IE和Chrome中,它不起作用。 Google Chrome没有任何反应。在IE中,我在页面上出现错误。该错误是一个语法错误。它不喜欢字线后面的<字符。
好吧,所以我想我最好在这个字符串周围加上一些引号。但是......当我这样做时,没有任何工作。
答
我只是假设form::dropdown
被吐出纯HTML。在Firefox中,这被解释为E4X,然后在连接时转回字符串。 IE和Chrome不支持E4X。为了使它的工作,你可以做这样的事情:
lines = <?php echo json_encode(form::dropdown(...)); ?>;
编辑:,当你把它周围的引号不工作的原因是因为HTML包含引号。上面的代码将正确地转义引号。
答
Chrome不支持XML文字语法,您不能编写例如line = <div>foo</div>
,你必须将数据放入一个字符串中。
lines = '<?php echo form::dropdown($ext_id."[did]", $lines, ""); ?>;'
可以工作(你应该也可能逃脱'
)
+0
这就是我认为可能的工作,但实际上它根本不起作用。 – Matt 2010-07-05 01:22:47
答
你可以显示什么是在Firefox版本输出? – Duniyadnd 2010-07-05 01:00:47