You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

纯JS模块化渲染单词问题:renderDOM参数undefined等报错求助

问题修复方案

问题根源

  1. 未引入render.js,导致window.render对象不存在
  2. reverse函数被IIFE包裹,未暴露到全局作用域,无法直接调用
  3. 脚本加载顺序错误,依赖文件必须在调用代码之前加载
  4. renderDOM函数未挂载到全局可访问的位置

修正后的代码

HTML文件

调整脚本加载顺序,补全render.js的引入,修正文件名笔误:

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
</head>
<body>
    <div class="root"></div>

    <!-- 先加载所有依赖脚本 -->
    <script src="dom.js"></script>
    <script src="render.js"></script>
    <script src="reverse.js"></script>
    
    <!-- 最后执行调用代码 -->
    <script>
        window.render.renderDOM('.root', reverse('sseccus'));
    </script>
</body>
</html>

reverse.js

修改IIFE,将reverse函数暴露到全局:

(function () {
    window.reverse = function(str) {
        return str.split('').reverse().join('');
    }
})();

render.js

将renderDOM挂载到window.render对象,确保全局可访问:

const TAG = 'p';

window.render = window.render || {};
window.render.renderDOM = function(selector, content) {
    const root = document.querySelector(selector);

    if (!root) {
        return;
    }

    const element = createElement(TAG, content);
    root.appendChild(element);
};

dom.js

保持原代码即可,createElement作为全局函数可被render.js访问:

const TAG = 'div';

function createElement(tag = TAG, content) {
    const element = document.createElement(tag);
    element.textContent = content;
    return element;
}

效果验证

页面加载后,.root容器内会生成<p>success</p>元素,显示文本success。

内容的提问来源于stack exchange,提问作者Dmitriy Zimmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:35:22