【问题标题】:change href-target by incrementing a variable通过增加一个变量来改变href-target
【发布时间】:2023-03-19 04:46:01
【问题描述】:

我正在做一个测验,这个测验有一个计时器。当计时器结束时,它会触发一个使用 href 作为目标的 scrollLeft 动画。我想要做的是解决它总是针对第一个.qAnswers li a 的问题是使用变量来更改href-target 的名称。 好吧,它似乎没有按计划工作,我做错了什么?

这里是项目的链接:http://www.carlpapworth.com/friday-quiz/#

HTML:

<div id="qWrap">
                <ul id="qBox">
<!--Q1-->           <li id="q1" class="qContainer">
                        <div class="qQuestion">Question I                       </div>
                        <ul class="qAnswers">
                            <li><a href="#q2" class="aWrong"><h3>Answer a</h3></a></li>
                            <li><a href="#q2" class="aCorrect"><h3>Answer b</h3></a></li>
                            <li><a href="#q2" class="aWrong"><h3>Answer c</h3></a></li>
                        </ul>
                    </li>
<!--Q2-->           <li id="q2" class="qContainer">
                        <div class="qQuestion">Question II                      </div>
                        <ul class="qAnswers">
                            <li><a href="#q3" class="aWrong"><h3>Answer 1</h3></a></li>
                            <li><a href="#q3" class="aWrong"><h3>Answer 2</h3></a></li>
                            <li><a href="#q3" class="aCorrect"><h3>Answer 3</h3></a></li>
                        </ul>
                    </li>
<!--Q3-->           <li id="q3" class="qContainer">
                        <div class="qQuestion">Question III                     </div>
                        <ul class="qAnswers">
                            <li><a href="#q4" class="aWrong"><h3>Answer 1</h3></a></li>
                            <li><a href="#q4" class="aWrong"><h3>Answer 2</h3></a></li>
                            <li><a href="#q4" class="aCorrect"><h3>Answer 3</h3></a></li>
                        </ul>
                    </li>
</ul>
</div>

JS:

//timer//

function timesUp(){
            $('#timerBar').animate({'width':'0px'}, 7000, function(){
                nextQuestion(function(){
                    resetTimer();
                }); 
            });                 
}

var hrefURL = '#q';
var hrefData = 2; <!-- VARIABLE -->
$('.qAnswers a:first').attr('href', hrefURL + hrefData);

function nextQuestion(event){
    var $anchor = $('.qAnswers a:first');
     $('#qWrap').stop(true, true).animate({
        scrollLeft: $($anchor.attr('href')).position().left
        }, 2000, function(){
            nextCount();  
hrefData++; <!-- INCREASE VARIABLE -->

        });

}

【问题讨论】:

  • 对不起,我觉得我可以帮助你解决这个问题,但我不明白哪里出了问题,你到底想完成什么。如果计时器倒计时,您希望它回到开头吗?
  • 对不起,不,我想要的是要触发的动画。它第一次工作(将#qWrap 滚动到下一个 id='#qN' 的 li.qContainer),但是动画一直在&lt;li id='#q2'&gt; 触发,因为它总是针对第一个.qAnswer a。我解决这个问题的方法是为#qN(N 是 hrefData)创建一个变量,从而每次将变量增加一个,以便它针对下一个 &lt;li id='#q2'&gt;
  • 如果重要的是人们不要在这个测验中作弊(我假设是这样),我不会使用类来指示正确和错误的答案,每个现代浏览器都可以轻松打开 html 源并查看易于命名的类。只是一个提示:)
  • 嘿嘿好小伙伴;)

标签: javascript jquery variables href


【解决方案1】:
FINALY! I found the answer to my own problem: 
    var hrefURL = '#q';
    var hrefData = 2;
    $('.qAnswers a:first').attr('href', hrefURL + hrefData);

    function nextQuestion(event){
        var $anchor = $('.qAnswers a:first');
         $('#qWrap').stop(true, true).animate({
            scrollLeft: $($anchor.attr('href')).position().left
            }, 2000, function(){
                nextCount();  
    hrefData++;
    $('.qAnswers a:first').attr('href', hrefURL + hrefData); <!-- I need to fire this again for the hrefData++; to be applied  -->

            });

}

【讨论】:

    猜你喜欢
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    相关资源
    最近更新 更多