javascript - 使用 javascript 创建嵌套的 div

标签 javascript jquery html dom appendchild

我已经使用 javascript 成功创建了一个 div,其中填充了从 API 收集的数据。我想获取该数据的一部分(来自 Episode、SeasonxEpisode 等的所有 innerHTML 文本)并将其放入包含的 div 中,以便我可以将其隔离用于 css 样式。

这是我的代码,所有内容都在同一个父级中。还有一张从 API 中提取的图像显示在 episodeDiv 中,但它未包含在此代码片段中,因为它不是问题的一部分。

<script>
let savedResponse;

function clickSeason (seasonNum) {

    const currentSeason = savedResponse['season'+ seasonNum];

    $("#episode-list").html("");

    currentSeason.forEach(function(episode){
        const episodeDiv = document.createElement('div');
        $(episodeDiv).addClass("episodeStyle");

        episodeDiv.innerHTML = 
            "Episode: " + episode.title + '<br />' + '<br />' + 
            "SeasonxEpisode: " + episode.episode + '<br />' + 
            "Original Airdate: " + episode.airdate + '<br />'  + 
            " Stardate: " + episode.stardate + '<br />' + 
            episode.summary;

        $('#episode-list').append(episodeDiv);
</script>

您可以在这里看到完整的项目:http://idesn3535-flamingo.surge.sh/Final/index.html

完整代码在这里:https://github.com/bmaxdesign/idesn3535-flamingo/blob/master/Final/index.html

我尝试了几个版本:

const episodeData = document.createElement('p');
                $(episodeData).addClass("episodeDataStyle");

episodeData.innerHTML = 
                    "Episode: " + episode.title + '<br />' + '<br />' + 
                    "SeasonxEpisode: " + episode.episode + '<br />' + 
                    "Original Airdate: " + episode.airdate + '<br />'  + 
                    " Stardate: " + episode.stardate + '<br />' + 
                    episode.summary;

$("episodeData").appendChild(episodeDiv);

我希望父节点是 episodeDiv,然后我想将 episodeData 嵌套为具有单独 id 的子节点以在 css 中设置样式。不幸的是,我上面的内容实际上使整个 episodeDiv 都没有显示,我认为这意味着我附加的方式存在一些错误。我想我有一些标签混淆或语法错误,或以上所有错误。我试图避免在我的 HTML 页面中留下一个空元素,但我也对这种方法以及如何将文本放置在空 div 中感到困惑。我显然还不了解 DOM 操作。

请确保您的回复包括原因和方式,以及我可以用来更好地理解这一点的任何关键字或链接。授人以渔等等。非常感谢!!

最佳答案

我喜欢用 template literals Array.map 实现你想做的事。给猫剥皮的方法有很多种,但本文非常紧凑且可读性强。

// map the episode objects into strings of html
var episodeHTMLArray = currentSeason.map(episode => {
    return `
        <div class='episode'>
            Episode: ${episode.title} <br /> <br />
            SeasonxEpisode: ${episode.episode} <br />
            Original Airdate: ${episode.airdate} <br />
            Stardate: ${episode.stardate}<br />
            ${episode.summary}
        </div>
    `
})

// join the array of html into a plain string
$('#episode-list').html(episodeHTMLArray.join(''))

模板文字是反引号而不是引号,它们可以使用语法 ${varName} 呈现当前范围内的任何变量。 .

此外,我想我应该指出 $("episodeData")正在寻找一个看起来像 <episodeData></episodeData> 的元素.小心选择器。

关于javascript - 使用 javascript 创建嵌套的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47763249/

相关文章:

javascript - 仅显示首次访问 Django 的介绍视频

jquery选择预选项目

javascript - 如何在点击链接时保留 URL 查询参数?

javascript - 如何使用 JavaScript 在函数上指定源和目标?

javascript - 在嵌入中绑定(bind) src 在 chrome 中不起作用

javascript - 将图标保留在帖子底部,并在框中显示动态文本

php - 内部动态 JavaScript

JQUERY fadeIn - 为什么它闪烁整个 UL,而不是正在附加的 LI?

jQuery - 添加可编辑和可拖动的元素

javascript - React 组件游戏未使用路由渲染