Я создал несколько блоков div (под планированием), используя javascript здесь
for (i = 0; i < 168; i++) {
var iDiv = document.createElement('div');
iDiv.id = 'inc';
document.getElementById('appointmentchart').appendChild(iDiv);
}
Теперь мне нужно еще 2 вещи, которые нужно сделать с помощью JavaScript.
При щелчке внутри любого div
внутри планирования назначьте class="yellow"
на 3 последовательных div
вертикали (теперь div
расположены горизонтально).
Нужно ли расположить div вертикально для этого? Если да, то как?
Пойдите в Practicien
с левой стороны, выберите Chirurgie
→ DUPONT Marc
а затем выберите дату 10-Mar-2014
. Вы увидите назначения, видимые на Multiple планирования div
диаграмме. Некоторые из них выходят из контейнера.
Как переместить переполняющий раздел в следующий div
?
Можно ли добиться вышеупомянутого использования JavaScript?
в первую очередь, дать разные идентификаторы столбцам следующим образом:
for (i = 0; i < 168; i++) {
var iDiv = document.createElement('div');
iDiv.id = 'inc'+i; //different id
iDiv.addEventListener('click', clickFunction);// assign click handler
document.getElementById('appointmentchart').appendChild(iDiv);
}
предполагая, что в каждой строке всегда будет 14 столбцов, которые вы можете сделать
function clickFunction(){
var num= parseInt(this.id.substring(3));
for(var i=1;i<=3;i++){
document.getElementById('inc'+num).className+= 'yellow'
num+=14;
}
}
Обновление: FIDDLE
clickFunction()
на clickFunction
чтобы избежать ошибки. Проверьте эту скрипку jsfiddle.net/tilwinjoy/Gayr4 , она работает нормально
ответ на ваш вопрос 1):
Последовательные элементы оцениваются по порядку, который они отображаются в вашем HTML-коде, а не на том, где они заканчиваются на экране. Если ваша сетка планирования остается той же формы, всегда имея одинаковое количество div в строке и столбце, довольно легко получить те, которые вы хотите.
var clickedDiv=//point this at the div you clicked on
//select the grid squares
var divs=document.getElementById('appointmentchart').getElementsByTagName('div');
//how many divs across your grid is
var cols=14;
for(var i=0;i<divs.length;i++){
//find the clicked divs index
if(clickedDiv=divs[i]){
//make next three yellow
for(var y=1;y<4;y++){
var sqaure=cols*y;
if(i+square<divs.length){
divs[i+square].className='yellow';
}
}
break;
}
}
iDiv.id= 'inc'+i
next div
. div вправо? кажется, что длина для 2 div переполняется, и только 1 div находится справа от переполнения div внизу слева ..