Как окрасить, тип стиля списка автоматически сгенерировал числа?

Вам необходимо изменить данные для всех трех выпадающих меню select2. Прямо сейчас вы даете одинаковые данные для всех трех выпадающих. Здесь вы можете попробовать два подхода:

1.Создать массив с начальными значениями. Когда в первом раскрывающемся списке выбрано какое-то значение, скопируйте значения массива, кроме выбранного, в другой массив. Теперь используйте этот массив для второго выпадающего списка. Вы можете использовать событие onchange в раскрывающихся списках для обнаружения изменений и обновления массива для следующего раскрывающегося списка.

<select class="js-example-templating1" name="mem1" onchange="updateNextArray()">
        <?php
          $query = "select * from user";
          $query_result = query($query);
        while($row = fetch_array($query_result)) {
            echo "<option value='{$row['user_id']}'>{$row['user_id']} - {$row['name']}</option>";
        }
        ?>
      </select>
      <br><br>
      <select class="js-example-templating2" name="mem2" onchange="updateNextArray()">
        <?php
          $query = "select * from user";
          $query_result = query($query);
        while($row = fetch_array($query_result)) {
            echo "<option value='{$row['user_id']}'>{$row['user_id']} - {$row['name']}</option>";
        }
        ?>
      </select>
      <br><br>
      <select class="js-example-templating3" name="mem3" onchange="updateNextArray()">
        <?php
          $query = "select * from user";
          $query_result = query($query);
        while($row = fetch_array($query_result)) {
            echo "<option value='{$row['user_id']}'>{$row['user_id']} - {$row['name']}</option>";
        }
        ?>
      </select>
<script>
function updateNextArray(){
//update array here
}
function formatState (state) {
if (!state.id) {
return state.text;
}
var $state = $(
'<span>' + state.text + '</span>'
);
return $state;
};
$(".js-example-templating1").select2({
data: Array1,
templateResult: formatState
});
$(".js-example-templating2").select2({
data: Array2,
templateResult: formatState
});
$(".js-example-templating3").select2({
data: Array3,
templateResult: formatState
});
</script>

2.AJAX будет работать, если вы используете его правильно.

$(".js-example-templating").select2({
    ajax: {
        url: '../../subjects.json', // or api endpoint which supplies the array
        dataType: 'json',
    });
27
задан Volker E. 25 August 2014 в 15:56
поделиться

3 ответа

Ну, строка над заголовком - то, что числа технически сгенерированы в <li>, так что-либо Вы делаете к <li> будет влиять на число. От спецификации:

"Большинство элементов блочного уровня в CSS генерирует одно основное поле блока. В этом разделе мы обсуждаем два механизма CSS, которые заставляют элемент генерировать два поля: одно основное поле блока (для содержания элемента) и одно отдельное поле маркера (для художественного оформления, такого как маркер, изображение или число)".

Заметьте, что и поле маркера и основное поле принадлежат тому же элементу - в этом случае, элемент списка. Соответственно, мы должны ожидать все <li> моделирование для применения к и маркеру и к содержанию. Это также не удивительно, если Вы думаете об этом, как будто сам элемент списка генерирует контент нумерации (который эффективно это делает в условиях CSS). Это подтверждено позже, когда спецификация продолжается:

"Свойства списка позволяют основное визуальное форматирование списков. Как с более общими маркерами, элементом с 'дисплеем: элемент списка' генерирует основное поле для содержания элемента и дополнительное поле маркера. Другие свойства списка позволяют авторам указывать тип маркера (изображение, глиф или число) и его положение относительно основного поля (снаружи или в нем перед содержанием). Они не позволяют авторам указывать отличный стиль (цвета, шрифты, выравнивание, и т.д.) для маркера списка или регулировать его положение относительно основного поля".

Таким образом, потому что маркер принадлежит списку, он затронут <li> моделирование и не является корректируемым непосредственно. Единственный способ достигнуть другого моделирования для маркера состоит в том, чтобы вставить a <span> в элементе списка и стиле промежуток со свойствами Вы хотите отличаться от маркера.

27
ответ дан AlecRust 28 November 2019 в 04:02
поделиться

Это должно работать:

<ol id="footnotes">
    <li><span>This is the first footnote...</span></li>
    <li><span>This is the second footnote...</span></li>
</ol>

#footnotes li { color: #f90; }
#footnotes li span { color: #000; }
32
ответ дан Can Berk Güder 28 November 2019 в 04:02
поделиться

Как насчет этого?

<head>
  <style>
    #footnotes li { color: #f90; }
    #footnotes li a { color: #000; }
  </style>
</head>
<body>
  <ol id="footnotes">
    <li><a name="footnote1">This is the first footnote...</a></li>
    <li><a name="footnote2">This is the second footnote...</a></li>
  </ol>
</body>
2
ответ дан John Gietzen 28 November 2019 в 04:02
поделиться