javascript createElement 和 setAttribute

标签 javascript html

我开始自学 javascript。我想我会尝试制作一个脚本,在提供 URL 时嵌入一个 youtube 视频。当我创建 iframe 元素、设置属性并将其作为子元素附加到 div 时,任何人都可以帮助我理解我做错了什么吗?我正在使用 JSFiddle,当我检查元素时,没有标签似乎已添加到 div。谢谢!

编辑:这是我的 jsfiddle 链接:http://jsfiddle.net/86W8N/2/

<p>Click the button to call function</p>
YoutubeURL: <input id="url" type="text">
<button onclick="myFunction()">Try it</button>

<div id="video_div">
</div>

<script>
function myFunction() {
    var urlValue = document.getElementById("url").value;
    var videoID = urlValue.substring(urlValue.indexOf('=') + 1);

    var video = document.createElement("iframe");
    video.setAttribute(title, "Test");
    video.setAttribute(width, "440");
    video.setAttribute(height, "390");
    video.setAttribute(src, "http://www.youtube.com/embed/" + videoID);
    video.setAttribute(frameborder, "0");

    var div_element = document.getElementById("video_div");

    div_element.appendChild(video);
}
</script>

最佳答案

你的代码将停止执​​行,抛出一个title is not defined exception at

video.setAttribute(title, "Test");

setAttribute(title, ...) 中,您使用 title 就好像它是一个名为 title 的变量,但它并不存在。您想要传递 字符串值 "title":

video.setAttribute('title', 'Test');

...其他属性也一样...

由于您正在使用 JSFiddle,还有一些提示:

  • 养成保存 fiddle 的习惯,并始终将链接与您的问题一起提供
  • 在左侧面板的“Framework & Extensions”下,确保您已将 javascript 设置为“不换行”加载,否则您将无法按照您的方式从 html 调用方法已经完成了。 (当您在 JavaScript 面板中定义 JavaScript 函数时,这适用。我从包含 fiddle 链接的更新问题中看到,您目前将其全部放在 HTML 标记中,因此您不会遇到这个问题)<
  • 在浏览器中按 F12,您将能够看到您的代码产生的实际错误消息。

关于javascript createElement 和 setAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191576/

相关文章:

html - 如果没有内容隐藏边框

html - 根据其中一个 div 中的内容调整大小的 2 列

javascript - 在 Grails 中使用导出功能时将生成的文件保存到本地磁盘

javascript - 内联 div 没有排成一行

javascript - 表格单元格内的 Bootstrap 日期选择器未正确显示

php - 使用php mysql为div分配不同的类名

java - 异步 I/O - Java

javascript - 每次点击同一元素都会发生不同的事件

html - 水平滚动条不适用于标题

javascript - 加载 header 后维护持久的事件链接类?