C O M P E T I C I O N E S

F U T B O L A S P A L M A S . C O M FUTBOLASPALMAS.COM
C A R R U S E L O N L I N E
/*document.addEventListener("DOMContentLoaded", () => { async function cargarEscudos() { try { const respuesta = await fetch(`mostrar_equipaciones.php?_=${Date.now()}`, { method: 'GET', headers: { 'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0' } }); if (!respuesta.ok) throw new Error('Error en el servidor'); const html = await respuesta.text(); const contenedor = document.getElementById("mostrar_equipaciones"); if (contenedor) { const parser = new DOMParser(); const docNuevo = parser.parseFromString(html, 'text/html'); const canvasNuevos = docNuevo.querySelectorAll(".bandera-viento"); const canvasActuales = contenedor.querySelectorAll(".bandera-viento"); const divsNuevos = docNuevo.querySelectorAll(".equipacion-imagenes"); const divsActuales = contenedor.querySelectorAll(".equipacion-imagenes"); if (canvasActuales.length !== canvasNuevos.length || divsActuales.length !== divsNuevos.length || canvasActuales.length === 0) { contenedor.innerHTML = html; initBanderas(); return; } // FILTRO CRÍTICO: Comprobamos si el orden o los datos han cambiado realmente let hayCambiosReales = false; canvasNuevos.forEach((canvasNuevo, index) => { const canvasActual = canvasActuales[index]; if (canvasActual.getAttribute("data-src") !== canvasNuevo.getAttribute("data-src")) { hayCambiosReales = true; } }); // Si no hay ningún cambio en las posiciones ni en los datos, nos saltamos la animación por completo if (!hayCambiosReales) { return; } // 1. MAPEAMOS LAS COORDENADAS ANTES DEL REFRESCO (Solo si hay cambios reales) const posInicialesCanvas = new Map(); const posInicialesDivs = new Map(); canvasActuales.forEach((canvas) => { const src = canvas.getAttribute("data-src"); if (src) posInicialesCanvas.set(src, canvas.getBoundingClientRect()); }); divsActuales.forEach((div) => { const img = div.querySelector("img"); if (img && img.getAttribute("src")) { posInicialesDivs.set(img.getAttribute("src"), div.getBoundingClientRect()); } }); // 2. ACTUALIZAMOS LOS DATOS DE LAS 16 POSICIONES canvasNuevos.forEach((canvasNuevo, index) => { const canvasActual = canvasActuales[index]; const srcNuevo = canvasNuevo.getAttribute("data-src"); const estiloNuevo = canvasNuevo.getAttribute("style"); if (canvasActual.getAttribute("data-src") !== srcNuevo) { canvasActual.setAttribute("data-src", srcNuevo); canvasActual.removeAttribute("data-animado"); canvasActual.dataset.animado = "false"; } if (canvasActual.getAttribute("style") !== estiloNuevo) { canvasActual.setAttribute("style", estiloNuevo); } }); divsNuevos.forEach((divNuevo, index) => { const divActual = divsActuales[index]; if (divActual && divActual.innerHTML !== divNuevo.innerHTML) { divActual.innerHTML = divNuevo.innerHTML; } }); initBanderas(); // 3. ANIMAMOS LA FLOTACIÓN SÓLO PARA LOS ELEMENTOS QUE CAMBIARON DE LUGAR canvasActuales.forEach((canvas) => { const src = canvas.getAttribute("data-src"); const inicial = posInicialesCanvas.get(src); if (inicial) { const final = canvas.getBoundingClientRect(); const deltaX = inicial.left - final.left; const deltaY = inicial.top - final.top; if (deltaX !== 0 || deltaY !== 0) { canvas.animate([ { transform: `translate(${deltaX}px, ${deltaY}px)` }, { transform: 'translate(0px, 0px)' } ], { duration: 3600,easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)'}); } } }); // 4. ANIMAMOS LOS DIVS DE LAS EQUIPACIONES (Sincronizados por la bandera) divsActuales.forEach((div) => { // Averiguamos en qué número de renglón (0 al 15) está este div de equipación ahora mismo const indexActual = Array.from(divsActuales).indexOf(div); const canvasActual = canvasActuales[indexActual]; if (canvasActual) { const srcBanderaActual = canvasActual.getAttribute("data-src"); // Recuperamos la posición física donde estaba la caja de esta equipación antes del refresco const inicial = posInicialesDivs.get(srcBanderaActual); if (inicial) { const final = div.getBoundingClientRect(); const deltaX = inicial.left - final.left; const deltaY = inicial.top - final.top; // Si el equipo cambió de renglón, deltaY o deltaX no serán 0 if (deltaX !== 0 || deltaY !== 0) { // Forzamos la animación en la caja contenedora externa div.animate([ { transform: `translate(${deltaX}px, ${deltaY}px)`, opacity: '0.7' }, { transform: 'translate(0px, 0px)', opacity: '1' } ], { duration: 3600, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)' }); } } } }); } } catch (error) { console.error("Error al cargar escudos:", error); } finally { setTimeout(cargarEscudos, 10000); } } cargarEscudos(); }); */
Posiciones LIGA TERCERA FEDERACION
CD Laguna
CD Marino
Estrella CF
Las Palmas C
Los Llanos
Mensajero
Real Unión
San Bartolomé
San Fernando
San Mateo
San Miguel
Sotavento
Tenerife C
UD Añaza
UD Lanzarote
US Yaiza
Villa SB
Villaverde
I S L A S   C A N A R I A S
HOY ES JUEVES 13 DE AGOSTO DEL 2026
Publicidad

 
refejado en acta comprobado con RFEF | FIFLP | FCF
/*document.addEventListener("DOMContentLoaded", () => { async function cargarEscudos() { try { const respuesta = await fetch(`mostrar_equipaciones.php?_=${Date.now()}`, { method: 'GET', headers: { 'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0' } }); if (!respuesta.ok) throw new Error('Error en el servidor'); const html = await respuesta.text(); const contenedor = document.getElementById("mostrar_equipaciones"); if (contenedor) { const parser = new DOMParser(); const docNuevo = parser.parseFromString(html, 'text/html'); const canvasNuevos = docNuevo.querySelectorAll(".bandera-viento"); const canvasActuales = contenedor.querySelectorAll(".bandera-viento"); const divsNuevos = docNuevo.querySelectorAll(".equipacion-imagenes"); const divsActuales = contenedor.querySelectorAll(".equipacion-imagenes"); if (canvasActuales.length !== canvasNuevos.length || divsActuales.length !== divsNuevos.length || canvasActuales.length === 0) { contenedor.innerHTML = html; initBanderas(); return; } // FILTRO CRÍTICO: Comprobamos si el orden o los datos han cambiado realmente let hayCambiosReales = false; canvasNuevos.forEach((canvasNuevo, index) => { const canvasActual = canvasActuales[index]; if (canvasActual.getAttribute("data-src") !== canvasNuevo.getAttribute("data-src")) { hayCambiosReales = true; } }); // Si no hay ningún cambio en las posiciones ni en los datos, nos saltamos la animación por completo if (!hayCambiosReales) { return; } // 1. MAPEAMOS LAS COORDENADAS ANTES DEL REFRESCO (Solo si hay cambios reales) const posInicialesCanvas = new Map(); const posInicialesDivs = new Map(); canvasActuales.forEach((canvas) => { const src = canvas.getAttribute("data-src"); if (src) posInicialesCanvas.set(src, canvas.getBoundingClientRect()); }); divsActuales.forEach((div) => { const img = div.querySelector("img"); if (img && img.getAttribute("src")) { posInicialesDivs.set(img.getAttribute("src"), div.getBoundingClientRect()); } }); // 2. ACTUALIZAMOS LOS DATOS DE LAS 16 POSICIONES canvasNuevos.forEach((canvasNuevo, index) => { const canvasActual = canvasActuales[index]; const srcNuevo = canvasNuevo.getAttribute("data-src"); const estiloNuevo = canvasNuevo.getAttribute("style"); if (canvasActual.getAttribute("data-src") !== srcNuevo) { canvasActual.setAttribute("data-src", srcNuevo); canvasActual.removeAttribute("data-animado"); canvasActual.dataset.animado = "false"; } if (canvasActual.getAttribute("style") !== estiloNuevo) { canvasActual.setAttribute("style", estiloNuevo); } }); divsNuevos.forEach((divNuevo, index) => { const divActual = divsActuales[index]; if (divActual && divActual.innerHTML !== divNuevo.innerHTML) { divActual.innerHTML = divNuevo.innerHTML; } }); initBanderas(); // 3. ANIMAMOS LA FLOTACIÓN SÓLO PARA LOS ELEMENTOS QUE CAMBIARON DE LUGAR canvasActuales.forEach((canvas) => { const src = canvas.getAttribute("data-src"); const inicial = posInicialesCanvas.get(src); if (inicial) { const final = canvas.getBoundingClientRect(); const deltaX = inicial.left - final.left; const deltaY = inicial.top - final.top; if (deltaX !== 0 || deltaY !== 0) { canvas.animate([ { transform: `translate(${deltaX}px, ${deltaY}px)` }, { transform: 'translate(0px, 0px)' } ], { duration: 3600,easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)'}); } } }); // 4. ANIMAMOS LOS DIVS DE LAS EQUIPACIONES (Sincronizados por la bandera) divsActuales.forEach((div) => { // Averiguamos en qué número de renglón (0 al 15) está este div de equipación ahora mismo const indexActual = Array.from(divsActuales).indexOf(div); const canvasActual = canvasActuales[indexActual]; if (canvasActual) { const srcBanderaActual = canvasActual.getAttribute("data-src"); // Recuperamos la posición física donde estaba la caja de esta equipación antes del refresco const inicial = posInicialesDivs.get(srcBanderaActual); if (inicial) { const final = div.getBoundingClientRect(); const deltaX = inicial.left - final.left; const deltaY = inicial.top - final.top; // Si el equipo cambió de renglón, deltaY o deltaX no serán 0 if (deltaX !== 0 || deltaY !== 0) { // Forzamos la animación en la caja contenedora externa div.animate([ { transform: `translate(${deltaX}px, ${deltaY}px)`, opacity: '0.7' }, { transform: 'translate(0px, 0px)', opacity: '1' } ], { duration: 3600, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)' }); } } } }); } } catch (error) { console.error("Error al cargar escudos:", error); } finally { setTimeout(cargarEscudos, 10000); } } cargarEscudos(); }); */ /*document.addEventListener("DOMContentLoaded", () => { async function cargarEscudos() { try { const respuesta = await fetch(`mostrar_equipaciones.php?_=${Date.now()}`, { method: 'GET', headers: { 'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0' } }); if (!respuesta.ok) throw new Error('Error en el servidor'); const html = await respuesta.text(); const contenedor = document.getElementById("mostrar_equipaciones"); if (contenedor) { const parser = new DOMParser(); const docNuevo = parser.parseFromString(html, 'text/html'); const canvasNuevos = docNuevo.querySelectorAll(".bandera-viento"); const canvasActuales = contenedor.querySelectorAll(".bandera-viento"); const divsNuevos = docNuevo.querySelectorAll(".equipacion-imagenes"); const divsActuales = contenedor.querySelectorAll(".equipacion-imagenes"); if (canvasActuales.length !== canvasNuevos.length || divsActuales.length !== divsNuevos.length || canvasActuales.length === 0) { contenedor.innerHTML = html; initBanderas(); return; } // FILTRO CRÍTICO: Comprobamos si el orden o los datos han cambiado realmente let hayCambiosReales = false; canvasNuevos.forEach((canvasNuevo, index) => { const canvasActual = canvasActuales[index]; if (canvasActual.getAttribute("data-src") !== canvasNuevo.getAttribute("data-src")) { hayCambiosReales = true; } }); // Si no hay ningún cambio en las posiciones ni en los datos, nos saltamos la animación por completo if (!hayCambiosReales) { return; } // 1. MAPEAMOS LAS COORDENADAS ANTES DEL REFRESCO (Solo si hay cambios reales) const posInicialesCanvas = new Map(); const posInicialesDivs = new Map(); canvasActuales.forEach((canvas) => { const src = canvas.getAttribute("data-src"); if (src) posInicialesCanvas.set(src, canvas.getBoundingClientRect()); }); divsActuales.forEach((div) => { const img = div.querySelector("img"); if (img && img.getAttribute("src")) { posInicialesDivs.set(img.getAttribute("src"), div.getBoundingClientRect()); } }); // 2. ACTUALIZAMOS LOS DATOS DE LAS 16 POSICIONES canvasNuevos.forEach((canvasNuevo, index) => { const canvasActual = canvasActuales[index]; const srcNuevo = canvasNuevo.getAttribute("data-src"); const estiloNuevo = canvasNuevo.getAttribute("style"); if (canvasActual.getAttribute("data-src") !== srcNuevo) { canvasActual.setAttribute("data-src", srcNuevo); canvasActual.removeAttribute("data-animado"); canvasActual.dataset.animado = "false"; } if (canvasActual.getAttribute("style") !== estiloNuevo) { canvasActual.setAttribute("style", estiloNuevo); } }); divsNuevos.forEach((divNuevo, index) => { const divActual = divsActuales[index]; if (divActual && divActual.innerHTML !== divNuevo.innerHTML) { divActual.innerHTML = divNuevo.innerHTML; } }); initBanderas(); // 3. ANIMAMOS LA FLOTACIÓN SÓLO PARA LOS ELEMENTOS QUE CAMBIARON DE LUGAR canvasActuales.forEach((canvas) => { const src = canvas.getAttribute("data-src"); const inicial = posInicialesCanvas.get(src); if (inicial) { const final = canvas.getBoundingClientRect(); const deltaX = inicial.left - final.left; const deltaY = inicial.top - final.top; if (deltaX !== 0 || deltaY !== 0) { canvas.animate([ { transform: `translate(${deltaX}px, ${deltaY}px)` }, { transform: 'translate(0px, 0px)' } ], { duration: 3600,easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)'}); } } }); // 4. ANIMAMOS LOS DIVS DE LAS EQUIPACIONES (Sincronizados por la bandera) divsActuales.forEach((div) => { // Averiguamos en qué número de renglón (0 al 15) está este div de equipación ahora mismo const indexActual = Array.from(divsActuales).indexOf(div); const canvasActual = canvasActuales[indexActual]; if (canvasActual) { const srcBanderaActual = canvasActual.getAttribute("data-src"); // Recuperamos la posición física donde estaba la caja de esta equipación antes del refresco const inicial = posInicialesDivs.get(srcBanderaActual); if (inicial) { const final = div.getBoundingClientRect(); const deltaX = inicial.left - final.left; const deltaY = inicial.top - final.top; // Si el equipo cambió de renglón, deltaY o deltaX no serán 0 if (deltaX !== 0 || deltaY !== 0) { // Forzamos la animación en la caja contenedora externa div.animate([ { transform: `translate(${deltaX}px, ${deltaY}px)`, opacity: '0.7' }, { transform: 'translate(0px, 0px)', opacity: '1' } ], { duration: 3600, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)' }); } } } }); } } catch (error) { console.error("Error al cargar escudos:", error); } finally { setTimeout(cargarEscudos, 10000); } } cargarEscudos(); }); */
© Futbol Las Palmas
Clasificación
Calendario
Alavés
18:30
Getafe CF
Sevilla FC
20:30
Rayo Vall.
Racing Club
16:00
Villarreal CF
Espanyol
18:00
Levante UD
Celta
20:30
Osasuna
Deportivo
20:00
Elche CF
Atlético
20:00
Málaga CF
Valencia CF
20:00
Real Betis
Real Madrid
20:00
Real Sociedad
Barcelona
20:00
Athletic Club
 
Clasificación
Calendario
Real B
19:30
Castellón
Andorra
16:00
Ceuta FC
Cádiz CF
18:00
Celta For.
Oviedo
18:00
Granada CF
Mallorca
20:30
Valladolid
Eibar
16:00
Tenerife
Burgos CF
18:00
Córdoba CF
Girona FC
18:00
Leganés
Las Palmas
20:30
Albacete
Sporting
18:00
Sabadell FC
Almería
20:30
Eldense
 
Clasificación
Calendario
Atl. Antoniano
00:00
Don Benito
Atlético Paso
00:00
CP Mijas
Badajoz
00:00
Tenerife B
Atl. Central
00:00
Huelva
Estepona
00:00
Xerez
Linares
00:00
Lucena
Las Palmas Atl.
00:00
Betis Dep.
Marbella
00:00
Sanluqueño
Tamaraceite
00:00
Sevilla Atl.
 
Clasificación
Calendario
San Mateo
12:00
Mensajero
Tenerife C
16:00
Villa SB
Los Llanos
17:00
CD Marino
Las Palmas C
17:00
CD Laguna
San Bartolomé
17:00
Sotavento
San Miguel
17:00
Estrella CF
UD Añaza
17:00
UD Lanzarote
Villaverde
17:30
US Yaiza
San Fernando
12:00
Real Unión
 
Clasificación
Calendario
San José
21:00
Bco. Hondo
Arucas CF
11:00
Lon. Toscal
US Yaiza
12:00
Sobradillo
Acodetti CF
12:00
Las Palmas
Herbania
13:00
Puertos LP
CD 35600
17:00
Tenerife
Mensajero
12:00
Unión Viera
Las Zocas
12:00
AD Huracán
 
Clasificación
Calendario
Alavés
00:00
Valencia CF
Athletic Club
00:00
Badalona LP
Deportivo
00:00
Sevilla FC
Eibar
00:00
Espanyol
Barcelona
00:00
Tenerife
Madrid CFF
00:00
Granada CF
Real Madrid
00:00
Atlético
Real Sociedad
00:00
DUX Logroño
 
Clasificación
Calendario
Alhama CF
00:00
Levante UD
Atlético B
00:00
Alba FF
Barcelona B
00:00
Real Unión
Osasuna
00:00
Real Madrid B
Real Soc. B
00:00
Cacereño
SportExtre.
00:00
Athletic B
Tenerife B
00:00
Villarreal CF
 
Clasificación
Calendario
Almería
00:00
Femarguín
CD Argual
00:00
Olympia
Córdoba CF
00:00
Fuensalida
Getafe
00:00
Granada B
Málaga CF
00:00
Guiniguada
Pozuelo
00:00
Real Betis
Sporting Club
00:00
Cacereño Atl.
 
Clasificación
Calendario
S.A. Pureza
8
-
1
Gran Canaria
La Palma
0
-
0
Peña Amistad
UDG Teide
2
-
1
R.U. Tenerife B
Femarguin B
1
-
3
Fun. Tenerife B
Caday FTV
3
-
0
Argual B
Guiniguada B
1
-
2
Laguna
 
F U T B O L A S P A L M A S . C O M