Возникли проблемы с даталистом и перенаправлением результатов - PullRequest
0 голосов
/ 23 декабря 2018

Здравствуйте. Я пытаюсь перенаправить результаты поиска из своих панелей поиска, но он возвращает все результаты поиска в самом последнем утверждении, которое я сделал в функции

. Вот JS для перенаправления поиска

              var inputSearchCalc = document.querySelector('#calculatorSearch').value;
        var searchCalcBtn = document.querySelector('#search-calculator-index');

        function searchCalc() {
            if (inputSearchCalc = 'Algebra') {
                window.location = '/educationSec/calculatorSubjects/algebra/algebra.html'
            } 
            if (inputSearchCalc = 'Analytical Chemistry') {
                window.location = '/educationSec/calculatorSubjects/AChem/AChem.html'
            } 
            if (inputSearchCalc ='Chemistry') {
                window.location = '/educationSec/calculatorSubjects/chemistry/chemistry.html'
            } 
            if (inputSearchCalc = 'Economics') {
                window.location = '/educationSec/calculatorSubjects/economics/economics.html'
            }
            if (inputSearchCalc = 'Financial Accounting') {
                window.location = '/educationSec/calculatorSubjects/finAccounting/finAccounting.html'
            }
            if (inputSearchCalc = 'Geometry') {
                window.location = '/educationSec/calculatorSubjects/geometery/geometery.html'
            }
            if (inputSearchCalc = 'Managerial Accounting') {
                window.location = '/educationSec/calculatorSubjects/manAccounting/manAccounting.html'
            }
            if (inputSearchCalc = 'Organic Chemistry') {
                window.location = '/educationSec/calculatorSubjects/organicChem/organicChem.html'
            }
            if (inputSearchCalc = 'Physics') {
                window.location = '/educationSec/calculatorSubjects/physics/physics.html'
            }
            if (inputSearchCalc = 'Precalculus') {
                window.location = '/educationSec/calculatorSubjects/precalc/precalc.html'
            } 
        }

     searchCalcBtn.addEventListener('click' , searchCalc);

Все результаты перенаправляются на предварительную страницу, которая является последней

Ответы [ 4 ]

0 голосов
/ 23 декабря 2018

Самое простое, что могло бы решить проблему операторов if (вы назначаете не для сравнения - следует использовать ==, а не =), а также сделать код меньше, - это использоватьобъект.Добавьте это:

var subjectURLs = {
    'Algebra': 'algebra/algebra.html',
    'Analytical Chemistry': 'AChem/AChem.html',
    'Chemistry': 'chemistry/chemistry.html',
    'Economics': 'economics/economics.html',
    'Financial Accounting': 'finAccounting/finAccounting.html',
    'Geometry': 'geometery/geometery.html',
    'Managerial Accounting': 'manAccounting/manAccounting.html',
    'Organic Chemistry': 'organicChem/organicChem.html',
    'Physics': 'physics/physics.html',
    'Precalculus': 'precalc/precalc.html'
}

const baseURL = '/educationSec/calculatorSubjects/';

Затем просто сделайте это с вашим кодом:

function searchCalc(search) {
    window.location = baseURL + subjectURLS[search];
}

Пример (console.log на месте, чтобы вы могли видеть вывод):

var subjectURLs = {
    'Algebra': 'algebra/algebra.html',
    'Analytical Chemistry': 'AChem/AChem.html',
    'Chemistry': 'chemistry/chemistry.html',
    'Economics': 'economics/economics.html',
    'Financial Accounting': 'finAccounting/finAccounting.html',
    'Geometry': 'geometery/geometery.html',
    'Managerial Accounting': 'manAccounting/manAccounting.html',
    'Organic Chemistry': 'organicChem/organicChem.html',
    'Physics': 'physics/physics.html',
    'Precalculus': 'precalc/precalc.html'
}

const baseURL = '/educationSec/calculatorSubjects/';

function searchCalc(search) {
    console.log(baseURL + subjectURLs[search]);
}
    
searchCalc("Algebra");
searchCalc("Physics");

Надеюсь, это поможет!

0 голосов
/ 23 декабря 2018

Пятница и ответы Павла были великолепны.Одиночный символ «=» постоянно отключает даже опытных программистов.На каком бы языке вы ни программировали, всегда полезно потратить немного времени на каждую форму присваивания и проверки значений для любого типа объекта, с которым вы можете иметь дело - целых чисел, вещественных чисел, строк, объектов, указателей, типов,структуры и т. д.

Мне понравилось, что переключатель получил хорошую экспозицию.

Еще одна вещь, которая мне понравилась, это то, как люди выделяют baseURL.Имя переменной было идеальным.Это делает код намного проще для понимания и поддержки.

Ответ Джека был моим любимым.Его код не только прост без ущерба для правильности или полноты, но и эти данные могут быть упакованы в файл конфигурации JSON вне основной программы или в базу данных.Это облегчает реализацию отладки, тестирования и обработки ошибок по мере необходимости.

Даже для простых одноразовых одноразовых программ это позволяет поместить все данные конфигурации в верхнюю часть программы, чтобы программа моглабыть скопированным, отредактированным и при желании перезапущенным.

0 голосов
/ 23 декабря 2018

Вы получаете значение до срабатывания функции, поэтому оно возвращает пустое значение.Вы должны получить значение после вызова функции и использовать double, равный == или ===, чтобы сравнить два значения, а не один оператор присваивания =.Сейчас работает нормально

var educationList = document.querySelector('#educationListOutput');

        educationList.innerHTML = industries;

        //var inputSearchCalc = document.querySelector('#calculatorSearch').value;
        var inputSearchCalc = document.querySelector('#calculatorSearch');

         var searchCalcBtn = document.querySelector('#search-calculator-index');


            function searchCalc() {

                inputSearchCalc = inputSearchCalc.value; //Added this line

                if (inputSearchCalc == 'Algebra') {
                    window.location = '/educationSec/calculatorSubjects/algebra/algebra.html'
                } 
                if (inputSearchCalc == 'Analytical Chemistry') {
                    window.location = '/educationSec/calculatorSubjects/AChem/AChem.html'
                } 
                if (inputSearchCalc =='Chemistry') {
                    window.location = '/educationSec/calculatorSubjects/chemistry/chemistry.html'
                } 
                if (inputSearchCalc == 'Economics') {
                    window.location = '/educationSec/calculatorSubjects/economics/economics.html'
                }
                if (inputSearchCalc == 'Financial Accounting') {
                    window.location = '/educationSec/calculatorSubjects/finAccounting/finAccounting.html'
                }
                if (inputSearchCalc == 'Geometry') {
                    window.location = '/educationSec/calculatorSubjects/geometery/geometery.html'
                }
                if (inputSearchCalc == 'Managerial Accounting') {
                    window.location = '/educationSec/calculatorSubjects/manAccounting/manAccounting.html'
                }
                if (inputSearchCalc == 'Organic Chemistry') {
                    window.location = '/educationSec/calculatorSubjects/organicChem/organicChem.html'
                }
                if (inputSearchCalc == 'Physics') {
                    window.location == '/educationSec/calculatorSubjects/physics/physics.html'
                }
                if (inputSearchCalc == 'Precalculus') {
                    window.location = '/educationSec/calculatorSubjects/precalc/precalc.html'
                } 
            }
0 голосов
/ 23 декабря 2018

Вот пример преобразования метода в переключатель.Примечание: я изменяю функцию, чтобы она принимала searchParam в качестве параметра, это позволяет вам тестировать ваш код и инкапсулирует функцию.

function searchCalc(searchParam) {
  let urlBase = '/educationSec/calculatorSubjects/';
  switch (searchParam) {
    case 'Algebra':
      urlBase += 'algebra/algebra.html';
      break;
    case 'Analytical Chemistry':
      urlBase += 'AChem/AChem.html';
      break;
    case 'Chemistry':
      urlBase += 'chemistry/chemistry.html';
      break;
    case 'Economics':
      urlBase += 'economics/economics.html';
      break;
    case 'Financial Accounting':
      urlBase += 'finAccounting/finAccounting.html';
      break;
    case 'Geometry':
      urlBase += 'geometery/geometery.html';
      break;
    case 'Managerial Accounting':
      urlBase += 'manAccounting/manAccounting.html';
      break;
    case 'Organic Chemistry':
      urlBase += 'organicChem/organicChem.html';
      break;
    case 'Physics':
      urlBase += 'physics/physics.html';
      break;
    case 'Precalculus':
      urlBase += 'precalc/precalc.html';
      break;
    default: 
      urlBase += '404.html';
      break;
  }
  return urlBase;
}

console.log(searchCalc("Organic Chemistry"));
console.log(searchCalc("Wrong Search"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...