script3.js 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // Form
  2. // Напишите код, который их любого объекта создает форму HTML. Например для такого объекта
  3. // На экране должна появиться форма из 7 строк, с названиями полей, взятыми из ключей и полями ввода
  4. // соответствующих типов. Значениями полей ввода должны быть значения из объекта.
  5. form: {
  6. const car = {
  7. "Name": "chevrolet chevelle malibu",
  8. "Cylinders": 8,
  9. "Displacement": 307,
  10. "Horsepower": 130,
  11. "Weight_in_lbs": 3504,
  12. "Origin": "USA",
  13. "in_production": false
  14. }
  15. let string = "<form style='display: flex; flex-direction: column;'>";
  16. for (let value of Object.keys(car)) {
  17. let type;
  18. if (typeof (car[value]) == 'number') {
  19. type = 'number';
  20. } else if (typeof (car[value]) == 'string') {
  21. type = 'text';
  22. } else if (typeof (car[value]) == 'boolean') {
  23. type = 'checkbox';
  24. }
  25. string += `<label style='margin-bottom: 16px;'>
  26. ${value.slice(0, 1).toUpperCase() + value.slice(1).toLowerCase().replaceAll("_", " ")}
  27. <input type ="${type}" value="${car[value]}"/>
  28. </label>`;
  29. }
  30. string += "</form>";
  31. document.write(string);
  32. }
  33. // Table
  34. // Дан любой массив с объектами
  35. // Сформировать таблицу (используя накопление тэгов HTML в строке):
  36. // Алгоритм решения
  37. // Перед непосредственно формированием строк таблицы надо знать все колонки. Для этого нужно предварительно
  38. // перебрать все объекты и извлечь из них все ключи, что бы сформировать общее множество ключей.
  39. // Первый проход - поиск колонок
  40. // Перебираем массив объектов, перебираем ключи каждого объекта и добавляем в массив колонок, если этого ключа
  41. // еще там нет. Для примера выше массив получится в шесть элементов. На этом этапе строку HTML создавать еще рано.
  42. // Заголовок
  43. // Начинаем создание таблицы. Используя массив колонок формируем одну строку таблицы с заголовками
  44. // Второй проход - отображение таблицы
  45. // Перебираем массив объектов, перебираем массив колонок для каждого объекта, и используем название колонки как
  46. // ключ
  47. table: {
  48. const persons = [
  49. {
  50. name: 'Мария',
  51. fatherName: 'Ивановна',
  52. surname: 'Иванова',
  53. sex: 'female'
  54. },
  55. {
  56. name: 'Николай',
  57. fatherName: 'Иванович',
  58. surname: 'Иванов',
  59. age: 15
  60. },
  61. {
  62. name: 'Петр',
  63. fatherName: 'Иванович',
  64. surname: 'Иванов',
  65. married: true
  66. },
  67. ]
  68. let ColumnArr = [];
  69. for (let person of persons) {
  70. for (let key of Object.keys(person)) {
  71. if (!ColumnArr.includes(key)) {
  72. ColumnArr.push(key);
  73. }
  74. }
  75. }
  76. let str = "<table style = 'border-collapse: collapse; border: 1px solid gray; text-align: center;'><tr>";
  77. for (ColumnName of ColumnArr) {
  78. str += `<th style = 'border-collapse: collapse; border: 1px solid gray; background-color: #d3d3d3; padding: 10px'>${ColumnName}</th>`;
  79. }
  80. str += "</tr>";
  81. for (let person of persons) {
  82. str += "<tr>";
  83. for (let ColumnName of ColumnArr) {
  84. str += `<td style = 'border-collapse: collapse; border: 1px solid gray; padding: 10px'>${person[ColumnName] || ''}</td>`;
  85. }
  86. str += "</tr>";
  87. }
  88. str += "</table>"
  89. document.write(str);
  90. }