Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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/2/jquery/74.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 函数变量don';你不能在jQuery中工作吗?_Javascript_Jquery - Fatal编程技术网

Javascript 函数变量don';你不能在jQuery中工作吗?

Javascript 函数变量don';你不能在jQuery中工作吗?,javascript,jquery,Javascript,Jquery,我在做一个jquery函数,但是我在一些变量上遇到了麻烦。我无法在输入中获取#op1的值,在#z1中,它显示“I”而不是“Start”。此外,计数器参数不累加。它只显示“0”。在单击事件中,它被累加 javascript代码: $(function() { $(function () { var inpreco = []; var altpreco = []; var cpcounter9 = 0; $(".opcaopreco").click(function () { Super

我在做一个jquery函数,但是我在一些变量上遇到了麻烦。我无法在输入中获取#op1的值,在#z1中,它显示“I”而不是“Start”。此外,计数器参数不累加。它只显示“0”。在单击事件中,它被累加

javascript代码:

$(function() {

$(function () {
var inpreco = [];
var altpreco = [];
var cpcounter9 = 0;

$(".opcaopreco").click(function () {
    SuperF(this, "#preco", "inpreco", "altpreco", "cpvalor", "cpindex",
        "cpactive", "cpcounter9", "preco");
});

function SuperF(element, input, inpArray, secArray, inpValue, secIndex, 
inpActive,
    counter, msqlip) {

    var inpValue = $("#" + element.id).val();
    var secIndex = $("#" + element.id).data(secIndex);
    var inpActive = $("#" + element.id).data(inpActive);

    if (inpArray[0] == "") {
        counter++;
        $("#" + element.id + "l").addClass("activa");
        $(element).data(inpActive, "primary");
        inpArray[0] = (inpValue);
        input.val(inpArray[0]);
    }

    $("#z1").html(inpArray[0]);
    $("#z2").html(counter);
    $("#z3").html(cpcounter9);
};
});

});
html代码:

<input id="preco" type="text" name="preco" value=''><br><br>

    <div id="op1l" class="input">
        <input type="checkbox" id="op1" class="opcaopreco" value="Start" data-cpindex="1" data-cpactivo="">
        <label for="op1"></label>
        <span class="itext">Test</span>
    </div>

    <ul id="z">
        <li id="z1">z1</li>         
        <li id="z2">z2</li>
        <li id="z3">z3</li>

    </ul>


测验
    z1 z2 z3

您传递的是参数的字符串,而不是元素。因此,在索引该参数时,您将获得字符串中的第一个字符

您需要使用字符串作为选择器来获取其关联元素,然后将其返回值传递到函数中:

// use the strings to make a selection
var preco = $('#preco');
var inpreco = $('inpreco');
// etc.

// pass the results of each selection into your function
SuperF(this, preco, inpreco, ...)
您也可以在线执行此操作:

SuperF(this, $("#preco"), $("inpreco"), ...)
类似地,您也尝试将其他变量作为字符串传递,而不是像这样按名称传递:

SuperF(this, $('#preco'), inpreco, altpreco, cpvalor, cpindex, cpactive, cpcounter9, preco);

这就是你的函数无法访问大多数参数的原因,也是为什么你的计数器保持在
0

的原因,它比这更复杂。inpArray和secArray都是数组,我希望能够在函数中命名这些数组。此外,我如何解决计数器的问题?它总是返回0;@Adato我已经更新了答案再次解释一下,您需要将变量(而不是带有变量名称的字符串)传递到函数中。