电影Demo应用onclick事件触发时提示函数未定义问题求助
问题原因分析
你的代码主要存在以下几个问题,导致点击时出现函数未定义、无法获取参数的报错:
内联
onclick的参数传递语法错误
拼接onclick属性时,参数没有按字符串规则传递:- 第一个参数
with_original_langauge=${idLanguage}:with_original_langauge是你要传递的键名,需要用引号包裹成字符串;${idLanguage}作为字符串值也必须加引号,否则像en-US这种带特殊字符的内容会被解析成非法变量名,直接报错。 - 第二个参数
${language}:比如english会被浏览器当成一个未定义的变量,而非字符串"english",同样需要用引号包裹。
错误写法:
onclick="getMovieList(with_original_langauge=${idLanguage}, ${language})"修正后的写法(明确传递键和值两个字符串参数):
onclick="getMovieList('with_original_language', '${idLanguage}')"(注:你代码里函数是
getMovieList(key,value),如果要传递language作为第二个参数,就写成getMovieList('with_original_language', '${idLanguage}', '${language}'),同时调整函数参数接收)- 第一个参数
a标签跳转中断函数执行
<a>标签设置了href="index.html",点击时会立即触发页面跳转,导致onclick里的getMovieList还没执行完,页面就已经刷新了。需要阻止默认跳转行为:- 可以把href改为
javascript:void(0),或者在onclick里添加return false:onclick="getMovieList('with_original_language', '${idLanguage}'); return false;"
- 可以把href改为
innerHTML拼接的语法疏漏
你的<a>标签代码有语法错误:language-id=${idLanguage}"多了一个闭合引号,应该写成language-id="${idLanguage}",虽然这不是直接导致函数报错的原因,但会造成DOM解析异常。
另外你尝试的window.onload无效,是因为问题根本不在函数加载时机,而是参数传递的语法错误和跳转行为的干扰。
内容的提问来源于stack exchange,提问作者Ajeje
相关产品推荐
相关产品推荐

