javascript - onchange 属性不会调用函数

标签 javascript html onchange

我有一个 HTML 文档 ( here ),它为专辑中的歌曲集合创建一个基于 iframe 的媒体播放器(为简单起见,我只是使用字母在 mymusic 数组中定义这些专辑和歌曲)。

重点关注前 3 个 iframe,我设置用户交互的方式是使用 Javascript 生成可用专辑和歌曲形式的 HTML,并将它们写入正文中的 iframe。如果运行它并在 Albums 菜单中进行选择,您将看到 Songs 菜单中的选项与 mymusic 数组相对应,所以这有效。

但是,当我选择一首歌曲时,应使用歌曲中的onchange事件调用函数nowplaying(trackindex,albumindex)表单,与使用 showinitial() 生成的表单相同...但该函数不会被调用。

我已经排除了 nowplaying 本身的编码作为原因,因为即使我将 nowplaying 更改为 alert("hello") ,它不会被调用。所以这让我认为问题出在“anything”中的 onchange 属性上,但我看不到问题所在。我的编码方式与以前没有什么不同,而且运行得很好,那么为什么这个不起作用呢?

任何帮助将不胜感激!

最佳答案

Firebug 是你的 friend ......

i is not defined

function onchange(event) { parent.nowplaying(this.SelectedIndex, i); }(change )

正在调用 onchange,但在调用 nowplaying 时未定义 i

这是这一行的结果:

p+="<html><head></head><body><form><select onchange='parent.nowplaying(this.SelectedIndex,i);' size='"; 

当它应该将其作为变量附加时,它在字符串中使用“i”:

p+="<html><head></head><body><form><select onchange='parent.nowplaying(this.SelectedIndex," + i + ");' size='"; 

澄清一下,i 是在调用 anything(i) 时定义的,但您并没有将 i 写入代码中,只是字母“我”。当调用 nowplaying(this.SelectedIndex,i) 时,i 不再定义,因为您不在 anything() 内部不再起作用了。当您将 html 附加到 p 时,您需要展开 i,这样值就在那里,而不是变量 i

关于javascript - onchange 属性不会调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1799936/

相关文章:

javascript - 如何在 Meteor 的同一集合字段中添加来自同一表单的两个输入?

javascript - 从书签打开页面,但是,让它像模态窗口一样?

javascript - 如何将 onchange ="form.submit()"移动到 script 标签中?

javascript - 选择列表禁用出错

javascript - 带有 SQLSRV 和 JSON 的 jQuery 数据表

javascript - 在 Angular 中使用变量作为 firebase 引用

javascript - jQuery/Javascript : More complex Searching and Replacing in an HTML document

php - 读取/提交具有可变长度字段集的表单,作为数组服务器端读取

html - 在 anchor 标记内创建 anchor 标记

javascript - 防止 onchange 在输入上触发