我试图在事件处理程序中使用一个函数,但它一直显示未定义。它在我的事件处理程序之外工作。
我尝试使用的函数称为 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/