0

我在 javascript 中没有排练,并希望对链接到基于数组的 id 的下一个按钮有所帮助。这是数组

var baseline_next=new Array();
baseline_next[0]="#one";      
baseline_next[1]="#two";
baseline_next[2]="#three";
baseline_next[3]="#four";
baseline_next[4]="#five";
baseline_next[5]="#six";
baseline_next[6]="#six2";
baseline_next[7]="#seven";
baseline_next[8]="#eight";
baseline_next[9]="#nine";
baseline_next[10]="#ten";
baseline_next[11]="#eleven";
baseline_next[13]="#thirteen";
baseline_next[14]="#fourteen";
baseline_next[15]="#fifteen";
baseline_next[16]="#sixteen";
baseline_next[17]="#seventeen";
baseline_next[18]="#eighteen";
baseline_next[19]="#nineteen";
baseline_next[20]="#twenty";
baseline_next[21]="#twentyone";
baseline_next[22]="#twentytwo";
baseline_next[22]="#twentythree";

基本上我需要的是,当第一次单击下一个按钮(“0”~#one)时,我需要下一个按钮 id 变为两个,再次单击时它需要变为 #three。我不知道如何将数组链接到按钮。我需要这样做的原因是因为我使用 ajax 来加载 div 内容,所以下一个按钮实际上并没有提交,它只是成为一个新的下一个按钮。我不知道这是否重要,但这是按钮在单击时会导致发生的部分内容。

$('#one').click(function(){
        $("#area").hide("slide", { direction: "left" }, 500);
        $("#area").load("test_it.jsp #area");
        $("#area").show("slide", { direction: "right" }, 500);
        $("#two").show();

        });
$('#two').click(function(){
    if((document.form1.baseline_01[0].checked || document.form1.baseline_01[1].checked| document.form1.baseline_01[2].checked)
    && (document.form1.baseline_02[0].checked || document.form1.baseline_02[1].checked) 
    && (document.form1.baseline_03_native.checked || document.form1.baseline_03_asian.checked|| document.form1.baseline_03_black.checked|| document.form1.baseline_03_pacific.checked|| document.form1.baseline_03_white.checked|| document.form1.baseline_03_other.checked)){
        if(document.form1.baseline_03_other.checked && document.form1.baseline_03_other_text.value==""){
            alert("Please fill in what other race you concider yourself to be.");
            return false;
        }else{
        $("#area").hide("slide", { direction: "left" }, 500);
        $("#area").load("test_it.jsp #area2");
        $("#area").show("slide", { direction: "right" }, 500);
            $("#three").show();
            return true;
        }
    }else{
        alert("Please select an answer for each question.");
        return false;
    }
        });

如果我的问题难以理解,我必须提前道歉,我今年才开始编码。

4

4 回答 4

0

我认为您应该考虑稍微修改您的代码以不具有此 ID 列表并在所有元素上使用单个类。这将有助于了解您的 HTML 是如何设置为基于类获取下一个元素的。

不过,既然你已经拥有了这一系列厄运,我想我们将不得不使用它。理想情况下,每个元素都有相同的类。比方说,.number

$(".number").on('click', function () {
    var nextID = baseline_next.indexOf(this.id) + 1;
});

如果你不能使用.number,那么你可以做同样的事情,除了需要绑定的每个 ID 的列表..哎呀。在上面的函数中,nextID应该是被点击元素之后的 ID 的索引。

顺便说一句,ID 可以是数字,您甚至可以使用data-id包含数字的 ID。那也会更容易。

于 2013-02-20T00:41:50.600 回答
0

好的,我真的需要问你为什么要这样做,你确定像这样创建超过 20 个 ID 是实现你想要的更好的方法吗?

无论如何,首先,您可以以简写方式创建数组:

var baseline_next= ["#one", "#two", "#four", "#five", "#six", "#six2" ..., "#twentythree";

(顺便说一句“#six2”?真的吗?)

然后做这样的事情:

var counter = 0; // start for the first one
$("#button").on('click', function () {
    var id = counter++;
    baseline[id]; // and I don't know what you want to do with this, but here it is!
});
于 2013-02-20T00:43:36.757 回答
0

可以简化如下:

let baseline_next = ["#one", "#two", "#three"];

不要使用 a var,因为它的行为不可预测。

添加一个变量count来更改数组的索引。

let count = 0;
let baseline_next = ["#one", "#two", "#three"];
$(baseline_next[count]).click(function() {
    count++;
});

或者

let count = 0;
let baseline_next = ["#one", "#two", "#three"];
$("#one").click(function() {
    $(baseline_next[count]).click();
    count++;
});
于 2020-08-25T17:48:18.950 回答
0

古问。(7 年 wowzers)。这是我用来确定数组中下一项的一些逻辑,使用indexOf. 一旦到达阵列的末尾,这也将从头开始。

        let options = [true,false,null];
        let current = options.indexOf(this.get('order'));
        let next = (current+1 > options.length-1 ? 0 : current+1);
        this.set('order', options[next]);
于 2020-08-25T17:25:51.710 回答