亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據總分移動到不同的錨標簽

根據總分移動到不同的錨標簽

PHP
拉風的咖菲貓 2023-04-15 20:47:35
我有多項選擇題,根據累進分數,用戶需要轉到不同的問題。例如,每個問題有 4 個答案,每個答案都有一個分數。Question 1Answer 1 = 5 pointsAnswer 2 = 10 pointsAnswer 3 = 15 pointsAnswer 4 = 20 pointsQuestion 2Answer 1 = 5 pointsAnswer 2 = 10 pointsAnswer 3 = 15 pointsAnswer 4 = 20 points條件設置在后端,我可以說如果總分是 25,則轉到問題 7,否則如果任何其他分數不是 25,則繼續下一個問題,即:問題 3。我只是使用錨標簽在問題之間移動。如果您查看下面的邏輯部分,我就會被絆倒。跳轉到邏輯需要當前分數進行比較。要查明這條線,就是這條線: <?php if( get_field( 'go_to' )  && get_sub_field( 'score' ) == // CURRENT SCORE): ?>每次用戶單擊單選按鈕選項時,當前分數都會發生變化。$().ready(function(){function calcscore(){    var score = 0;    $(".calc:checked").each(function(){        score+=parseInt($(this).val());    });  }    $(".calc").change(function(){        calcscore()    });});PHP:<?php if ($questions->have_posts() ):            while ($questions->have_posts() ): $questions->the_post();?><!--Show Question-->   <div class="question-container" id="<?php echo get_the_ID(); ?>">    <div class="question">        <h5><?php the_title(); ?></h5>        <!-- Show answers-->        <?php if (have_rows( 'answers' ) ):                while (have_rows( 'answers' ) ): the_row();        ?>            <input type="radio" name="input<?php echo get_the_ID(); ?>" id="input<?php echo get_row_index(); ?>" value="<?php echo get_sub_field( 'score' ); ?>" class="calc">            <label for="input<?php echo get_row_index(); ?>"><?php echo get_sub_field( 'answer' ); ?></label>        <?php endwhile; ?>        <?php endif; ?>        <!--logic-->        <?php if (have_rows( 'condition' ) ):                    while (have_rows( 'condition' ) ): the_row();        ?>                 <?php if( get_field( 'go_to' )  && get_sub_field( 'score' ) == // CURRENT SCORE): ?>             <a href="#<?php echo get_field( 'go_to' )->ID; ?>" class="next-btn">Next</a>            <?php else: ?>             <a href="#<?php echo get_the_ID() + 1; ?>" class="next-btn">Next</a>            <?php endif; ?>
查看完整描述

1 回答

?
UYOU

TA貢獻1878條經驗 獲得超4個贊

讓我們在 JavaScript 中執行此操作。您已經有一個 JS 函數,它會在每次單擊答案時運行。在此功能中,您each在每個按鈕上都有一個循環radio...


$(".calc:checked").each(function(){...}

單選按鈕名稱連接到錨點名稱,對嗎? 讓我們使用那個連接! 所以嘗試添加這個...


if(this.prop('checked')) { // we only care about ANSWERED questions

    var newanchorlink = 'input' + parseInt($(this).attr('name').replace('input', ''), 10) + 1;

    $('.next-btn').attr('href', '#' + newanchorlink);

}

您應該看到這里發生了什么:您的單選按鈕具有屬性name="input(SOMENUMBER)",因此,我采用該屬性,將“input”替換為“”,將其解析為整數,將其加 1,然后將其與單詞“input”連接起來。我正在做的第二件事就是更改 href 以鏈接到我們的新 URL。


但是,這僅在各種條件下有效:您的輸入是增量的,即input1,input2等。您的輸入必須具有name的屬性input(somenumber),它不適用于nextinput(somenumber). 此外,我們正在檢查是否通過滿足條件的輸入列表中的最后一項來回答某些問題prop('checked'),如果您更改訂單或使用其他輸入,這將需要重新編碼。


當然,我自己沒有測試過!這里發生了很多事情,制作演示有點多。但我希望這會有所幫助!


查看完整回答
反對 回復 2023-04-15
  • 1 回答
  • 0 關注
  • 112 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號