javascript - 在事件处理程序中使用时函数未定义

标签 javascript jquery

我试图在事件处理程序中使用一个函数,但它一直显示未定义。它在我的事件处理程序之外工作。

我尝试使用的函数称为 task_name() 。我试图在 updateTaskName() 方法中使用它。

任何帮助将不胜感激。谢谢!

function task_name(task_id,category_id,task_name){

    var discussions_base_url = <?=json_encode(base_url().ProjCollabNav::$task_discussions);?>;
    var discussions_link = "<a href=" + discussions_base_url + "/" + task_id + "/" + category_id + ">" + task_name +
        "</a>";

    var updated_task = "<li class='tasks' data-task_id='"+task_id+"'>"+discussions_link+"</li>";


    return updated_task;


}





function updateTaskName(){

        $(document).on("click", ".save_task_name_changes", function () {


            var task_id = $(this).data("task_id");
            var category_id = $(this).data("category_id");
            var task_name  = $(".new_task_name_input[data-task_id='"+task_id+"']").val();

            /*Shows undefined*/
            task_name(task_id,category_id,task_name);

            $(".edit_mode[data-task_id='"+task_id+"']").replaceWith(updatedTaskName);


            return false;
        });



    }

最佳答案

您有两个名为 task_name 的变量。您定义的全局函数和事件处理程序中的局部变量由以下方式定义:

var task_name  = $(".new_task_name_input[data-task_id='"+task_id+"']").val();

局部变量“隐藏”全局变量。您应该将局部变量重命名为其他名称,然后更改调用。

var tname  = $(".new_task_name_input[data-task_id='"+task_id+"']").val();
task_name(task_id,category_id,tname);

关于javascript - 在事件处理程序中使用时函数未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31657061/

相关文章:

javascript - JQUERY keyup 函数仅当鼠标不在输入字段上时响应

javascript - 使用 JW Player 播放 SkyRadio

javascript - 如何在 javaScript 中声明一个空的数字(数字)值

javascript - 为什么我的 radio 输入值是 NaN?

javascript - css 变换在悬停时没有过渡,在鼠标移出时保持静态

jquery - 视差滚动部分的高度不固定/100%?

javascript - 执行文档范围 PNG 动画的最有效方法

php - 变量不是从 Javascript 传递的

javascript - jquery如何从输入中获取准确的值

javascript - 对 Web 方法的重复 AJAX 调用之间的延迟