猿问

如何根据单击的元素将不同的参数传递给函数?

我是新手,所以如果我不是太明确,请不要对我太苛刻。


我制作了一个带有两个测试按钮的 HTML 文件。


我创建了一个test()在 JavaScript 中调用的函数,其中包含一个到文件的 Ajax POST 方法test.php。


在PHP文件写入1和0名为的文本文件test.txt。


所有这一切只需一个按钮。


一切正常,但我有这个问题:


我希望test()在第二个按钮中调用我的函数,该按钮具有不同的数据test2.php,例如tag_test2, phptag_test2, On_test2,等其他 4 个变量toggle_test2。


所以需要编写一个函数test(testphp, tag, phptag, toggle, On)来为这两个具有不同参数的按钮调用它。


我试过这个功能。


function test(testphp, tag, phptag, On, toggle) {


    if (toggle_test == 0) {

        toggle = 1;

        On = 1;

        tag = On;

        document.getElementById("result").innerHTML = On;


        $.ajax({

            type: "POST",

            url: testphp,

            data: {

                phptag: tag

            }

        });


        return test;

    }


    if (toggle == 1) {

        toggle = 0;

        On = 0;

    }

    tag = On;

    document.getElementById("result").innerHTML = On;


    $.ajax({

        type: "POST",

        url: testphp,

        data: {

            phptag: tag

        }

    });

}

}


并在我的第一个按钮中调用它以查看它是否有效,但到目前为止还没有成功。


我替换test()为test('test.php', tag_test, phptag_test, On_test, toggle_test).

测试.php


<?php

$tag_test = $_POST['phptag_test'];




$file=fopen('test.txt', 'w');

fwrite($file, $tag_test . "\n");

fclose($file);

?>

这写入test.txt文件。


我的jquery-3.4.1.js文件夹中还有一个文件。


ABOUTYOU
浏览 174回答 3
3回答

江户川乱折腾

这是我认为可以解决您的主要问题的一些代码,即将动态值传递给函数。基本上,方法是:id为每个按钮添加唯一的属性添加一个点击处理程序根据单击的按钮定义不同的函数参数然后,您将能够通过有条件地处理传递给服务器端代码的值来处理不同的场景。jsFiddle 链接注意:jsFiddle 用于mockjax在从服务器检索结果时模拟延迟,并将多个值记录到控制台,以便您可以更好地了解代码中发生的情况,但您可以在实现时删除所有这些代码HTML<!-- added unique id's to your buttons --><div class="container">&nbsp; <button id="button1" type="button" class="btn btn-success">Test1</button>&nbsp; <button id="button2" type="button" class="btn btn-success">Test2</button>&nbsp; <div id="result"></div></div>JS// added on click handler$(document).on("click", "#button1, #button2", function() {&nbsp; // get reference to the instance of the button&nbsp;&nbsp;&nbsp; var instance = $(this).attr("id");&nbsp; // sanity check&nbsp;&nbsp;&nbsp; console.log("the instance is: " + instance);&nbsp; // create an object to store function parameters&nbsp; var parameters = {};&nbsp; // assign different values based on the instance&nbsp;&nbsp;&nbsp; if (instance === "button1") {&nbsp; &nbsp; parameters.php_file = "my_file_1.php";&nbsp; &nbsp; parameters.tag = "tag 1";&nbsp; &nbsp; parameters.phptag = "php tag 1";&nbsp; &nbsp; parameters.is_toggled = true;&nbsp; &nbsp; parameters.is_on = false;&nbsp; } else if (instance === "button2") {&nbsp; &nbsp; parameters.php_file = "my_file_2.php";&nbsp; &nbsp; parameters.tag = "tag 2";&nbsp; &nbsp; parameters.phptag = "php tag 2";&nbsp; &nbsp; parameters.is_toggled = false;&nbsp; &nbsp; parameters.is_on = true;&nbsp; }&nbsp; // call the function&nbsp; my_function(parameters);});const my_function = (parameters) => {&nbsp; var php_file = parameters.php_file;&nbsp; $.ajax({&nbsp; &nbsp; url: `/path/to/your/file/${php_file}`,&nbsp; &nbsp; data: parameters, // send the parameters to your server side file&nbsp; &nbsp; type: "POST",&nbsp;&nbsp; &nbsp; success: function(response) {&nbsp; &nbsp; &nbsp; // handle the response here&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; $("#result").text(response);&nbsp; &nbsp; }&nbsp; });}CSS.btn-success {&nbsp; background-color: #2E64FE;&nbsp; border: none;&nbsp; color: white;&nbsp; padding: 10px 20px;&nbsp; text-align: center;&nbsp; text-decoration: none;&nbsp; display: inline-block;&nbsp; font-size: 20px;}.btn-success:hover {&nbsp; background-color: blue;}.btn-success:focus {&nbsp; background-color: #2E64FE;}.btn-success:active:focus {&nbsp; background-color: blue;}.Header2 {&nbsp; padding: 50px;&nbsp; font-size: 50px;&nbsp; text-align: center;&nbsp; color: white;&nbsp; background-image: linear-gradient(#0033cc, #58FAF4);&nbsp; border: solid;}.space {&nbsp; padding: 25px;}.container {&nbsp; padding-left: 80px;}#instance {&nbsp; font-size: 18px;&nbsp; color: black;&nbsp; font-weight: bold;&nbsp; margin-top: 20px;&nbsp; font-family: arial;}#result {&nbsp; font-size: 38px;&nbsp; color: deeppink;&nbsp; font-weight: bold;&nbsp; margin-top: 20px;&nbsp; font-family: arial;}

不负相思意

只是我的想法。您将如何检测被单击的按钮并抛出一个条件,如果单击了 button2,则执行 ajax 调用以及对 button1 执行相同的操作。&nbsp; &nbsp;<button type="button" class="btn btn-success" id="button1" onclick="test(this.id)">Test</button>&nbsp; &nbsp;<button type="button" class="btn btn-success" id="button2" onclick="test(this.id)">Test2</button>&nbsp; &nbsp;<script>&nbsp; &nbsp; &nbsp;function test(button_id) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(button_id == "button1"){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // do your ajax here&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else if(button_id == "button2"){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // do your ajax here&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;</script>

慕后森

最简单的方法是在onClick事件中传递数据。例子像这样传递 urls 文件名和数据字符串。<button id="test" name="test" onClick="Test('test1', 'test_string_1');">Click Me </button><button id="test" name="test" onClick="Test('test2', 'test_string_2');">Click Me </button>然后如果你的Test函数像这样使用它们。function Test (filename, data){&nbsp; &nbsp; document.getElementById("result").innerHTML = data;&nbsp; &nbsp; $.ajax({&nbsp; &nbsp; &nbsp; &nbsp; type: "POST",&nbsp; &nbsp; &nbsp; &nbsp; url: filename + ".php",&nbsp; &nbsp; &nbsp; &nbsp; data: {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; phptag_test: data&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });}这只是一个伪示例,您需要为所需的功能编写自己的版本。
随时随地看视频慕课网APP
我要回答