-1
У меня есть объект javascript, который я бы хотел обработать и распечатать данные на основе 1 общей категории.Объект Looping javascript для печати данных
Javascript объект:
var $states = {
"AL" : {
"longname": "Alabama",
"lawOne": "Alabama Law 1",
"lawTwo": "Alabama Law 2",
"lawThree": "Alabama Law 3",
"region" : "Southeast"
},
"AK" : {
"longname": "Alaska",
"lawOne": "Alaska Law 1",
"lawTwo": "Alaska Law 2",
"lawThree": "Alaska Law 3",
"region" : "Northwest"
},
"AZ" : {
"longname": "Arizona",
"lawOne": "Arizona Law 1",
"lawTwo": "Arizona Law 2",
"lawThree": "Arizona Law 3",
"region" : "Southwest"
},
etc...
}
Я могу тоже цикл массив и получить как гранулированных, как получить консоль войти все государства, которые находятся в том же регионе:
for (var key in $states) {
if ($states.hasOwnProperty(key)) {
var $getStateRegion = $states[key].region
if ($getStateRegion === "Northeast") {
console.log ($states[key].longname);
}
}
}
После Я пытаюсь пропустить их и распечатать таблицу, в которой я столкнулся с проблемой. Я хочу иметь возможность иметь длинное имя, lawOne, lawTwo и lawThree. Что дает? Как только я попытаюсь запустить цикл for, я нахожусь на контрольном блоке. Заранее спасибо!
В чем проблема? –
Ваш код работает нормально, но вы, если сегмент не так. изменение ** Северо-Восток ** на ** Северо-запад ** – HoangHieu
@BeingSunny проблема в том, что в настоящее время регистрируется список всех длинных имен состояния. Цель состоит в том, чтобы перебрать состояния в этой области и отобразить их законы в разных
ответ
Пробуйте рабочий код ниже.
источник
2017-02-21 17:19:15
Вы на правильном пути. Прежде чем продолжить, я хотел бы указать, что вы используете цикл for..in, но более новые версии Javascript поддерживают цикл for..of, так что это то, что вы, возможно, захотите рассмотреть. Разница в том, что цикл for..in дает вам ключи объекта, а цикл for..of дает вам значения, поэтому он сокращает код, пропуская шаг, на котором вы пишете что-то, что действует:
Секрет вашего решения заключается в том, как вы обрабатываете DOM, и есть много способов сделать это. Я покажу вам один, но это не обязательно самый быстрый или лучший. Я рекомендую поиграть с различными манипуляторами DOM, чтобы найти тот, который лучше всего подходит для вас.
Во-первых, мы знаем, как получить запись, поэтому Javascript аспект цикла, у вас есть, что обработано ...
Далее нам нужно создать таблицу .... я буду считать, что вы хотите четыре столбца на основе вашего описания, но вы можете легко настроить это, чтобы поместить название состояния и один закон в каждую строку, что, вероятно, будет лучшим дизайном, позволяющим варьировать количество законов.
HTML, будет выглядеть примерно так:
Ваш цикл, то нужно было бы добавить к этому HTML, создав несколько строк, которые выглядят как:
Мы будем использовать строку манипуляции DOM, потому что это хорошее место для начала, потому что оно больше похоже на то, что вы пишете вручную.
Мы разложим стол на три части: заголовок, корпус и нижний колонтитул.
Теперь на петле, мы будем создавать каждую линию по мере необходимости и добавить его к телу:
После того, как у нас есть тело, мы можем сделать нашу таблицу, комбинируя заголовок, тело и нижние колонтитулы:
и тогда мы находим место, чтобы впрыснуть в наш документ:
Вот живой пример:
ПРИМЕЧАНИЕ: Что касается живого кода, HTML больше, чем поле дисплея. В моем браузере мне нужно прокрутить снимок HTML-кода для просмотра сгенерированной таблицы. Либо это, либо расширьте окно snippit до полной вкладки, чтобы просмотреть его на большом экране.
Приведенный выше код упрощен, и большинство кодеров скажут вам не использовать HTMLElement.innerHTML, потому что он работает медленно, но это хорошее место для начала. Как только у вас это будет, начните практиковать с помощью document.create (tagName), а затем используйте более прямые манипуляции с DOM.
источник
2017-02-21 18:00:14
Очень глубокий и полезный ответ! Благодаря! Всего несколько вещей. Когда я загружаю это в JSBin или Codepen, функция кнопки выводит таблицу, а затем исчезает. Я хотел поиграть с этим в песочнице, такой как атмосфера, где я мог бы немного поработать с DOM. Проблема здесь в том, что это не показывает данные, основанные на общей точке данных. Предположим, вы должны ввести «NJ» в поле ввода. Желаемый результат показал бы таблицу со всеми северо-восточными штатами и этими законами. –
Чтобы играть с кодом, который я вам дал, вы можете использовать небольшой «взломать», чтобы скопировать код в редактор фрагмента переполнения стека. Нажмите «Скопировать фрагмент, чтобы ответить». Это повторит мой код в новый ответ на ваш вопрос. Затем посмотрите ниже этой ссылки и нажмите ссылку «отредактируйте приведенный выше фрагмент». Это даст вам среду разработчиков, которая позволяет свободно играть с javascript, css и html. Когда вы закончите, скопируйте и вставьте это в свою собственную среду IDE и удалите проект ответа, который вы создали, оставив страницу без публикации. –
Чтобы изменить код в соответствии с вашими потребностями, вам необходимо определить, как будет выглядеть ваша таблица, и изменить цикл в соответствии с вашими потребностями. Поскольку вы можете выводить нужные данные на консоль, я предполагаю, что у вас есть часть цикла. Если вам нужна помощь в написании этих циклов, отправьте мне макет таблицы, который вы хотите использовать, и опишите различные способы фильтрации таблиц, и я помогу вам создать код. –
Смежные вопросы