Javascript 产生未定义变量的函数
我在学习管理系统中工作,并创建一些自定义组件 这将返回url,但“课程教学大纲代码”在url后显示为未定义。我是Javascript的初学者,已经在Google上查看了一些其他答案,但仍然无法理解 基本上,用户将能够打开代码并在顶部输入变量(将有多个)。然后再往下走就是所有魔法应该发生的地方 输入的变量的结构无法更改,但可能“魔术”没有以最佳方式执行Javascript 产生未定义变量的函数,javascript,var,undefined-function,Javascript,Var,Undefined Function,我在学习管理系统中工作,并创建一些自定义组件 这将返回url,但“课程教学大纲代码”在url后显示为未定义。我是Javascript的初学者,已经在Google上查看了一些其他答案,但仍然无法理解 基本上,用户将能够打开代码并在顶部输入变量(将有多个)。然后再往下走就是所有魔法应该发生的地方 输入的变量的结构无法更改,但可能“魔术”没有以最佳方式执行 <script type="text/javascript"> var course_syllabus_code = "72524"
<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>
var课程\教学大纲\代码=“72524”;
功能教学大纲链接(课程\教学大纲\代码){
location.href=https://foo.com“+课程\教学大纲\代码;
}
像这样试试
var course_syllabus_code = "72524";
function syllabusLink() {
location.href = 'https://foo.com'+course_syllabus_code;
}
因为在onClick()中没有传递任何参数
课程\教学大纲\代码是全局变量。您可以直接在函数中访问。更改函数参数,因为它与局部变量同名
var course_syllabus_code = "72524";
function syllabusLink(code) {
location.href = 'https://foo.com' + code;
}
您应该在href
属性中将课程\教学大纲\代码
传递到教学大纲链接
<a href="javascript:syllabusLink(course_syllabus_code)"><img src="CourseButton3.png" />Syllabus</a>
此位不正确:
javascript:syllabusLink()
您缺少参数,因此调用该函数
function syllabusLink(course_syllabus_code) {
未设置
course\u Celletus\u code
的值。您正在将course\u Celletus\u code
作为参数传递给函数,但调用函数时没有任何参数。当调用参数少于定义参数的函数时,未传递的参数的值为undefined
。由于给函数参数起了与全局参数相同的名称,因此它会在函数中的代码中“隐藏”(遮蔽、隐藏)全局参数,而函数中的代码将访问该参数
您有三个选择(只做其中一个,而不是全部):
function syllabusLink() {
// Removed here ------^
<a href="javascript:syllabusLink(course_syllabus_code)"><img src="CourseButton3.png" />Syllabus</a>
课程\教学大纲\代码
设置为全局,并将其传递给函数:
<a href="javascript:syllabusLink('72524')"><img src="CourseButton3.png" />Syllabus</a>
我可能会选择#3,除非有很好的理由证明它必须是一个全局变量。除了bookmarklet,请不要使用javascript:protocol
var course_syllabus_code = "72524";
function syllabusLink(code) {
location.href = 'https://foo.com' + code;
}
更好的代码是这个
<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>
功能教学大纲链接(课程\教学大纲\代码){
location.href=https://foo.com/course?syllabus=“+课程\教学大纲\代码;
返回false;//取消链接
}
或
这个
var课程\教学大纲\代码=“72524”;
函数提纲链接(){
location.href=https://foo.com/course?syllabus=“+课程\教学大纲\代码;
返回false;//取消链接
}
简单答案您需要通过课程_教学大纲_code
作为函数
中的参数。只需将其从函数
参数中删除,然后重试
<script type="text/javascript">
var course_syllabus_code = "72524";
function syllabusLink() {
location.href = 'https://foo.com'+course_syllabus_code;
}
</script>
var课程\教学大纲\代码=“72524”;
函数提纲链接(){
location.href=https://foo.com“+课程\教学大纲\代码;
}
原因是
课程\教学大纲\代码
是全局变量。您可以直接在函数中访问。您从未传入课程\教学大纲\代码
,因此它显示为未定义,因为它不存在。是否缺少问号?
<script type="text/javascript">
var course_syllabus_code = "72524";
function syllabusLink() {
location.href = 'https://foo.com'+course_syllabus_code;
}
</script>