Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 产生未定义变量的函数_Javascript_Var_Undefined Function - Fatal编程技术网

Javascript 产生未定义变量的函数

Javascript 产生未定义变量的函数,javascript,var,undefined-function,Javascript,Var,Undefined Function,我在学习管理系统中工作,并创建一些自定义组件 这将返回url,但“课程教学大纲代码”在url后显示为未定义。我是Javascript的初学者,已经在Google上查看了一些其他答案,但仍然无法理解 基本上,用户将能够打开代码并在顶部输入变量(将有多个)。然后再往下走就是所有魔法应该发生的地方 输入的变量的结构无法更改,但可能“魔术”没有以最佳方式执行 <script type="text/javascript"> var course_syllabus_code = "72524"

我在学习管理系统中工作,并创建一些自定义组件

这将返回url,但“课程教学大纲代码”在url后显示为未定义。我是Javascript的初学者,已经在Google上查看了一些其他答案,但仍然无法理解

基本上,用户将能够打开代码并在顶部输入变量(将有多个)。然后再往下走就是所有魔法应该发生的地方

输入的变量的结构无法更改,但可能“魔术”没有以最佳方式执行

<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>