如何在使用 Javascript 在 div 中附加 html 时实现字符串插值

Posted

技术标签:

【中文标题】如何在使用 Javascript 在 div 中附加 html 时实现字符串插值【英文标题】:How to achieve string interpolation while appending html inside a div using Javascript 【发布时间】:2019-11-28 18:37:13 【问题描述】:

可能是一个愚蠢的问题,但就是这样。 我正在尝试根据从我的支持 Java 控制器接收到的数据在我的 div 中插入一些 html。一切正常,但我不知道如何将收到的数据中的字符串插入到我的 jsp 的段落标签中。

这里是代码

<script>
    $(document).ready(function() 
        var url = "$context/support/ajax";
        $.ajax(
            type : 'GET',
            url : url,
            dataType : 'json',
            success : function(data, status, xhr) 

                data.forEach(function(data) 
                    if (data.userType == 'O') 
                        $( ".chats" ).append(`
                                <div class='chat-avatar'>


                                <a class='avatar' data-toggle='tooltip' href='#'
                                    data-placement='right' title='' data-original-title=''> <img
                                    src='<c:url value = '/app-assets/images/portrait/small/avatar-s-1.png'/>'
                                    alt='avatar'>
                                </a>
                            </div>
                            <div class='chat-body'>
                                <div class='chat-content'>
                                    <p>data.comment</p> // **This is what I want to achieve**
                                </div>
                            </div>
                                `);

                     

                );
            
        );

    );
</script>

上面的 ajax 调用工作正常,我确实收到了数据。此外,我可以将此 html 插入到适当的 div 元素中。现在我想在 p 元素中插入 data.comment 值。

我该怎么做?

编辑 --1

使用 `$expression` 语法后,&lt;p&gt; 标记在浏览器控制台中显示为空白,而显然该值存在。

编辑--2

我不知道为什么,但 "&lt;p&gt;"+d.comment+"&lt;/p&gt;" 正在工作。但不是插值。

【问题讨论】:

如此接近。模板字符串(或模板文字;字符串的反引号版本)使用语法$expression 来插入表达式。所以你只是错过了当前插值语法前面的$ :) 请注意,并非所有浏览器都支持模板文字 当我这样做时(反引号)...

$data.comment

....(反引号)UI 上什么也没有出现。在 chrome.a 上运行它
【参考方案1】:

我可以看到您将 data 变量用于 ajax 响应和循环中数据的当前值。你确定你引用了正确的对象吗?

【讨论】:

即使我把它改成两个不同的变量,结果也是一样的。【参考方案2】:

因为您使用的是反引号 (`),所以您接近使用模板字符串。你只需要正确使用占位符:

const data = comment: 'The comment';
const result = `...<p>$ data.comment </p>...`;

console.log(result);

Documentation on Template Strings

【讨论】:

当我这样做时(反引号)...

$data.comment

....(反引号)UI 上什么也没有出现。在 chrome.a 上运行它
@Naxi,如果你在success函数开头的console.log(data.comment),有没有可能是空字符串? 我查过了,不是。它在 console.log 中正确显示了值,但在模板文字中却没有。

以上是关于如何在使用 Javascript 在 div 中附加 html 时实现字符串插值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Javascript 或 CSS 在 DIV 上应用媒体查询 [重复]

如何在使用javascript单击div中的链接时禁用div中的所有其他链接[重复]

如何使用 JavaScript 在 div 中插入多个元素?

如何使用 JavaScript 在 div 中加载 HTML 页面?

如何在表格中上下移动行并使用javascript在新div中显示行内容

如何在使用 Javascript 在 div 中附加 html 时实现字符串插值