javascript - 将函数的变量定义给另一个函数

标签 javascript php jquery mysql ajax

我有很多按钮,其值包含用户名(jason、chan、brad 等),用户单击该按钮并将该按钮附加到特定的 div。示例:

<input type="button" onClick="nano();" id="name1" class="names"  name="jason" value="jason" />

并且它被转换为

<div id="name_selected"><input type="button" id="name1" class="added_name"  name="jason" value="jason" /></div>

当用户单击按钮时,nano 函数正在运行

function nano(){
$("#name1").click(function(){
$(this).appendTo("div#name_selected").removeClass("names");
$(this).addClass("added_name");
var name_value=$(this).attr("value");

});
}

真正的问题是我想获取所选按钮的值并使用ajax保存到数据库,以及如何定义name_value变量来函数ajaxSubmit()?

Uncaught ReferenceError: name_value is not defined

发生错误

function ajaxSubmit(){
            $.ajax({
                type:"POST",
                url:"z.php",
                cache:false,
                data:name_value,
                success:function(data) {
                    window.location.href="show.php";
                }
            });

        }

最佳答案

首先声明一个将在按钮单击时调用的函数:

/**
*   Function that performs various operations on button click
*   @param btn {jQuery object}: The button that triggered the click event
*/
function nano(btn) {   
   // Do your stuff here...       
   btn.appendTo("div#name_selected")
      .removeClass("names")
      .addClass("added_name");

   // Get the value attribute
   var name_value = btn.attr("value");

   // Make ajax call
   if (name_value) {
      ajaxSubmit(name_value);
   }       
}

声明将执行ajax调用的函数:

function ajaxSubmit(val) {
    // Check if 'val' is not undefined
    if (val) {
       $.ajax({
          type:"POST",
          url:"z.php",
          cache:false,
          data: { val: val },
          success:function(data) {
             window.location.href="show.php";
          },
          error:function() {
             // error handling here...
          }
       });
    }
}

在所需元素上添加事件监听器:

$(document).on('click', '.button-class', function() {
   // Call nano passing the clicked button as parameter
   // this --> the javascript object that triggered the click event
   // $(this) --> the jQuery object of 'this' 
   nano($(this));
});
<小时/>

重要:

从所有按钮中删除 onClick 属性! (不要使用它,而是使用 on() 函数添加事件监听器)

关于javascript - 将函数的变量定义给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39342969/

相关文章:

javascript - 通过将鼠标悬停在另一个 div 图像上来更改另一个 div 中另一个图像的不透明度

javascript - 无限循环中无法接收来自SQS的消息

php - 如何在 PHP 中有一个 64 位整数?

javascript - Angular 形 Material 没有 Angular 形 Material 的切屑效果

javascript - 在javascript中重新加载后保存变量值

javascript - window.onscroll 不适用于视差效果

javascript - 如何模糊网页背景并使其在某些区域不可交互?

php - 我的网页上出现不需要的广告

php - Ratchet 推送服务器教程问题

javascript - 使用响应表在表顶部进行列搜索