函数变量在jQuery中不起作用?

时间:2017-09-17 22:52:57

标签: javascript jquery

我正在制作一个jquery函数,但我遇到了一些变量的麻烦。我不能将#op1的值输入到输入中,而在#z1中它显示“i”而不是“Start”。计数器参数也不会加起来。它只显示“0”。在点击事件中它会加起来。< / p>

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>

1 个答案:

答案 0 :(得分:1)

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

你需要使用字符串作为选择器来获取它们的相关元素,然后将它们的返回值传递给你的函数:

// 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的原因。