Увеличьте ширину индикатора выполнения, проверив класс .active - PullRequest
0 голосов
/ 01 апреля 2020

Итак, я ломал голову над своими навыками поиска в Google, и я решил найти простой ответ. Я нашел альтернативное решение того, чего я пытался достичь, но меня беспокоит то, что я пытался сделать изначально, не сработало, что бы я ни делал.

Итак, вот что у меня есть bootstrap индикатор выполнения и bootstrap навигационные таблетки - показанные с использованием изображения, индикатор выполнения и вкладки для визуальной помощи

Я довольно новичок, и я борюсь между различиями JavaScript и jQuery но не возражайте против использования и извините, если я смешал и сопоставил.

** Я НЕ УСТАНАВЛИВАЮЛ КЛАССЫ НА АКТИВНЫЕ - Я ПРИНИМАЮ BOOTSTRAP ДЕЛАЕТ ** При проверке в браузере активный класс при выборе переключается с вкладки на вкладку. Я хочу иметь функцию, которая проверяет его наличие и увеличивает ширину индикатора выполнения в зависимости от выбранной вкладки.

У меня есть решение, но я хотел бы знать, почему ничего из этого не работает (если вы хотите решение, я могу отредактировать и поделиться демонстрацией)

, чтобы вызвать класс, который я пробовал:

$().hasClass
$().className
$().classList.contains

чтобы получить элемент, который нужно проверить для класса, который я пробовал

getElementById

document.querySelector 
const pill1 = $()
const pill1 = getElementbyID
const pill = document.querySelector

Просто не повезло

  <div class="container">
            <!-- PROGRESS BAR -->
            <div class="progress">
                <div id="progressbar" class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:10%">

                </div>
            </div>
            <!-- PROGRESS BAR END -->
        </div> 
<div id="tabs" class="container">
            <!-- TABS -->
        <ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
            <li id="pills-contactDetails-tab" class="nav-item">
                <a class="nav-link active" data-toggle="pill" href="#pills-contact" role="tab" aria-controls="pills-contact" aria-selected="true">Contact Details</a>
            </li>
            <li id="pills-FAQ1-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ1" role="tab" aria-controls="pills-FAQ1" aria-selected="false">FAQ 1</a>
            </li>
            <li id="pills-FAQ2-tab" class="nav-item">
                <a class="nav-link"  data-toggle="pill" href="#pills-FAQ2" role="tab" aria-controls="pills-FAQ2" aria-selected="false">FAQ 2</a>
            </li>
            <li id="pills-FAQ3-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ3" role="tab" aria-controls="pills-FAQ3" aria-selected="false">FAQ 3</a>
            </li>
            <li id="pills-FAQ4-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ4" role="tab" aria-controls="pills-FAQ4" aria-selected="false">FAQ 4</a>
            </li>
            <li id="pills-FAQ5-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ5" role="tab" aria-controls="pills-FAQ5" aria-selected="false">FAQ 5</a>
            </li>
            <li id="pills-FAQ6-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ6" role="tab" aria-controls="pills-FAQ6" aria-selected="false">FAQ 6</a>
            </li>
            <li id="pills-FAQ7-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ7" role="tab" aria-controls="pills-FAQ7" aria-selected="false">FAQ 7</a>
            </li>
            <li id="pills-FAQ8-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ8" role="tab" aria-controls="pills-FAQ8" aria-selected="false">FAQ 8</a>
            </li>
            <li id="pills-FAQ9-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ9" role="tab" aria-controls="pills-FAQ9" aria-selected="false">FAQ 9</a>
            </li>
            <li id="pills-requestCallBack-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-request" role="tab" aria-controls="pills-requestCallBack" aria-selected="false">Request Callback</a>
            </li>
        </ul>
        <div class="tab-content" id="pills-tabContent">
            <div class="tab-pane fade show active" id="pills-contact" role="tabpanel" aria-labelledby="pills-contactDetails-tab">1</div>
            <div class="tab-pane fade" id="pills-FAQ1" role="tabpanel" aria-labelledby="pills-FAQ1-tab">2</div>
            <div class="tab-pane fade" id="pills-FAQ2" role="tabpanel" aria-labelledby="pills-FAQ2-tab">3</div>
            <div class="tab-pane fade" id="pills-FAQ3" role="tabpanel" aria-labelledby="pills-FAQ3-tab">4</div>
            <div class="tab-pane fade" id="pills-FAQ4" role="tabpanel" aria-labelledby="pills-FAQ4-tab">5</div>
            <div class="tab-pane fade" id="pills-FAQ5" role="tabpanel" aria-labelledby="pills-FAQ5-tab">6</div>
            <div class="tab-pane fade" id="pills-FAQ6" role="tabpanel" aria-labelledby="pills-FAQ6-tab">7</div>
            <div class="tab-pane fade" id="pills-FAQ7" role="tabpanel" aria-labelledby="pills-FAQ7-tab">8</div>
            <div class="tab-pane fade" id="pills-FAQ8" role="tabpanel" aria-labelledby="pills-FAQ8-tab">9</div>
            <div class="tab-pane fade" id="pills-FAQ9" role="tabpanel" aria-labelledby="pills-FAQ9-tab">10</div>
            <div class="tab-pane fade" id="pills-request" role="tabpanel" aria-labelledby="pills-requestCallBack-tab">11</div>

        </div>
    </div>

$(document).ready(function () {
    $(".nav-item").click(progress());
});

function steps() {
    const element = document.getElementById("#progressbar");


    if ($("pills-contactDetails-tab").hasClass(".active")) {
        element.style.width = "0%";

    }
    else if ($("#pills-FAQ1-tab").hasClass(".active")) {
        element.style.width = "9.1%";

    }

    else if ($("#pills-FAQ2-tab").hasClass(".active")) {
        element.style.width ="18.2%";

    }
    else if ($("#pills-FAQ3-tab").hasClass(".active")) {
        element.style.width ="27.3%";

    }

}


1 Ответ

0 голосов
/ 01 апреля 2020

Таким образом, вы бы использовали событие show на вкладках, чтобы изменить индикатор выполнения. также переменная элемента была нулевой, потому что она имела «#progressbar» вместо «progressbar». Приведенный ниже пример должен работать нормально.

Я бы предложил изменить if ifif elseif на оператор switch позже.

$(document).ready(function() {
//  $(".nav-item").click(progress());

  $(".nav-link[data-toggle=pill]").on('shown.bs.tab', function(e) {
    e.target // newly activated tab
    e.relatedTarget // previous active tab
    var activeTabId = $(e.target).parent().attr('id');
      console.log(activeTabId);
     var element = document.getElementById("progressbar");


  if (activeTabId == "pills-contactDetails-tab") {
    element.style.width = "0%";

  } else if ( activeTabId == "pills-FAQ1-tab") {
    element.style.width = "9.1%";

  } else if (activeTabId == "pills-FAQ2-tab") {
    element.style.width = "18.2%";

  } else if (activeTabId == "pills-FAQ3-tab") {
    element.style.width = "27.3%";

  }

  })

});



function steps() {
  const element = document.getElementById("#progressbar");


  if ($("pills-contactDetails-tab").hasClass(".active")) {
    element.style.width = "0%";

  } else if ($("#pills-FAQ1-tab").hasClass(".active")) {
    element.style.width = "9.1%";

  } else if ($("#pills-FAQ2-tab").hasClass(".active")) {
    element.style.width = "18.2%";

  } else if ($("#pills-FAQ3-tab").hasClass(".active")) {
    element.style.width = "27.3%";

  }

}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

<div class="progress">
                <div id="progressbar" class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:10%">

                </div>
            </div>

<div id="tabs" class="container">
            <!-- TABS -->
        <ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
            <li id="pills-contactDetails-tab" class="nav-item">
                <a class="nav-link active" data-toggle="pill" href="#pills-contact" role="tab" aria-controls="pills-contact" aria-selected="true">Contact Details</a>
            </li>
            <li id="pills-FAQ1-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ1" role="tab" aria-controls="pills-FAQ1" aria-selected="false">FAQ 1</a>
            </li>
            <li id="pills-FAQ2-tab" class="nav-item">
                <a class="nav-link"  data-toggle="pill" href="#pills-FAQ2" role="tab" aria-controls="pills-FAQ2" aria-selected="false">FAQ 2</a>
            </li>
            <li id="pills-FAQ3-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ3" role="tab" aria-controls="pills-FAQ3" aria-selected="false">FAQ 3</a>
            </li>
            <li id="pills-FAQ4-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ4" role="tab" aria-controls="pills-FAQ4" aria-selected="false">FAQ 4</a>
            </li>
            <li id="pills-FAQ5-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ5" role="tab" aria-controls="pills-FAQ5" aria-selected="false">FAQ 5</a>
            </li>
            <li id="pills-FAQ6-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ6" role="tab" aria-controls="pills-FAQ6" aria-selected="false">FAQ 6</a>
            </li>
            <li id="pills-FAQ7-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ7" role="tab" aria-controls="pills-FAQ7" aria-selected="false">FAQ 7</a>
            </li>
            <li id="pills-FAQ8-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ8" role="tab" aria-controls="pills-FAQ8" aria-selected="false">FAQ 8</a>
            </li>
            <li id="pills-FAQ9-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-FAQ9" role="tab" aria-controls="pills-FAQ9" aria-selected="false">FAQ 9</a>
            </li>
            <li id="pills-requestCallBack-tab" class="nav-item">
                <a class="nav-link" data-toggle="pill" href="#pills-request" role="tab" aria-controls="pills-requestCallBack" aria-selected="false">Request Callback</a>
            </li>
        </ul>
        <div class="tab-content" id="pills-tabContent">
            <div class="tab-pane fade show active" id="pills-contact" role="tabpanel" aria-labelledby="pills-contactDetails-tab">1</div>
            <div class="tab-pane fade" id="pills-FAQ1" role="tabpanel" aria-labelledby="pills-FAQ1-tab">2</div>
            <div class="tab-pane fade" id="pills-FAQ2" role="tabpanel" aria-labelledby="pills-FAQ2-tab">3</div>
            <div class="tab-pane fade" id="pills-FAQ3" role="tabpanel" aria-labelledby="pills-FAQ3-tab">4</div>
            <div class="tab-pane fade" id="pills-FAQ4" role="tabpanel" aria-labelledby="pills-FAQ4-tab">5</div>
            <div class="tab-pane fade" id="pills-FAQ5" role="tabpanel" aria-labelledby="pills-FAQ5-tab">6</div>
            <div class="tab-pane fade" id="pills-FAQ6" role="tabpanel" aria-labelledby="pills-FAQ6-tab">7</div>
            <div class="tab-pane fade" id="pills-FAQ7" role="tabpanel" aria-labelledby="pills-FAQ7-tab">8</div>
            <div class="tab-pane fade" id="pills-FAQ8" role="tabpanel" aria-labelledby="pills-FAQ8-tab">9</div>
            <div class="tab-pane fade" id="pills-FAQ9" role="tabpanel" aria-labelledby="pills-FAQ9-tab">10</div>
            <div class="tab-pane fade" id="pills-request" role="tabpanel" aria-labelledby="pills-requestCallBack-tab">11</div>

        </div>
    </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...