[英]Function producing undefined variable
我正在学习管理系统中工作,并创建了一些自定义组件
这将返回URL,但URL后面的“ course_syllabus_code”显示为未定义。 我是Javascript的初学者,已经在谷歌上看了一些其他的答案,但仍然无法弄明白。
基本上用户将能够打开代码并在顶部输入变量(将有多个)。 然后在下面是应该发生所有魔术的地方...
输入的变量的结构不能改变,但可能没有以最佳方式执行“魔术”。
<script type="text/javascript">
var course_syllabus_code = "72524";
function syllabusLink(course_syllabus_code) {
location.href = 'https://foo.com'+course_syllabus_code;
}
</script>
<ul>
<li><a href="javascript:syllabusLink()"><img src="CourseButton3.png" />Syllabus</a></li>
</ul>
您将course_syllabus_code
作为参数传递给函数,但调用函数时没有任何参数。 当您调用参数少于其定义的函数时,您未传递的函数将通过值undefined
来完成。 由于您已经为函数参数赋予了与全局相同的名称,因此它会从函数中的代码“阴影”(隐藏,隐藏)全局,而代码将访问参数。
你有三个选择(只做其中一个 ,而不是全部):
通过删除声明的函数参数来使用全局变量:
function syllabusLink() { // Removed here ------^
或者 ,将全局传递给您调用它的函数:
<a href="javascript:syllabusLink(course_syllabus_code)"><img src="CourseButton3.png" />Syllabus</a>
我可能也改变了参数的名称(这里我使用了scode
):
function syllabusLink(scode) { location.href = 'https://foo.com'+scode; }
或者 ,不要将course_syllabus_code
全局,并将其传递给函数:
<a href="javascript:syllabusLink('72524')"><img src="CourseButton3.png" />Syllabus</a>
我可能会选择#3,除非有确凿的理由必须将其作为全局变量。
更改函数参数,因为它与局部变量的名称相同。
var course_syllabus_code = "72524";
function syllabusLink(code) {
location.href = 'https://foo.com' + code;
}
您应该将course_syllabus_code
传递给href
属性中的syllabusLink
。
<a href="javascript:syllabusLink(course_syllabus_code)"><img src="CourseButton3.png" />Syllabus</a>
试试这样吧
var course_syllabus_code = "72524";
function syllabusLink() {
location.href = 'https://foo.com'+course_syllabus_code;
}
因为在onClick()中您没有传递任何参数。
course_syllabus_code是全局变量。您可以直接在函数中访问。
这个位不正确:
javascript:syllabusLink()
您缺少参数,因此调用该函数
function syllabusLink(course_syllabus_code) {
没有设置course_syllabus_code
的值。
除了bookmarklet,请不要使用javascript:protocol。
更好的代码就是这个
<script type="text/javascript">
function syllabusLink(course_syllabus_code) {
location.href = 'https://foo.com/course?syllabus='+course_syllabus_code;
return false; // cancel link
}
</script>
<ul>
<li><a href="#" onclick="return syllabusLink('72524')"><img src="CourseButton3.png" />Syllabus</a></li>
</ul>
要么
这个
<script type="text/javascript">
var course_syllabus_code="72524";
function syllabusLink() {
location.href = 'https://foo.com/course?syllabus='+course_syllabus_code;
return false; // cancel link
}
</script>
<ul>
<li><a href="#" onclick="return syllabusLink()"><img src="CourseButton3.png" />Syllabus</a></li>
</ul>
答案很简单,你需要通过course_syllabus_code
在参数function
。 只需从function
参数中删除它并尝试。
<script type="text/javascript">
var course_syllabus_code = "72524";
function syllabusLink() {
location.href = 'https://foo.com'+course_syllabus_code;
}
</script>
原因是course_syllabus_code
是全局变量。您可以直接在函数中访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.