Torna indietro   Hardware Upgrade Forum > Software > Programmazione

CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
La prima tappa italiana della Road to CES porta a Milano i vertici della Consumer Technology Association, con una nuova griglia di lettura dei trend tecnologici e una posizione netta su dazi e regolamentazione dell'IA
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
OPPO ha appena lanciato sul mercato la nuova serie Find X10, che ha come smartphone premium il Find X10 Pro Max, uno smartphone completo, che fa del comparto fotografico il suo vero punto di forza. Ma sono tante le novità, tra cui l'AI che adesso diventa agentica. Ma andiamo a vedere nel dettaglio questo nuovo smartphone.
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
Abbiamo provato la beta di World of Warcraft: Forever, il Classic+ di Blizzard in arrivo il 4 novembre: la nuova razza Skyborne restituisce la sensazione di un gioco nuovo, ma le zone storiche conservano la noia divertita di Classic. Classi ribilanciate, sciamani anche nell'Alleanza e un motore grafico che in 4K gira bene anche su una RTX 3070. Cosa cambia in Forever? La risposta nell'articolo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-08-2015, 07:42   #1
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1392
[Javascript] Evidenziare parti di una figura SVG

Ho una figura dove al suo interno trovo dei tag <g> con un ID. Sotto <g> ci sono poi dei path con l'attributo opacity impostato a zero.

Io dovrei riuscire a modificarlo da javascript.
Alterando leggermente la figura riesco a farlo piuttosto bene:
Codice:
<svg>
....
....

<g id="id1_h" opacity="0" fill="#FFFFFF"><path d="M347.886,273.685c-8.352-5.711-8.352-5.711-8.352-5.711l-9.635-10.788 .... .... ...."/>
...
...
</svg>
Subito dopo nell html uso questo codice:
Codice:
	<script type="text/javascript">
function Colora(elemento) {
var att = document.createAttribute("opacity");       // Create a "class" attribute
att.value = 0.4;                           // Set the value of the class attribute
elemento.setAttributeNode(att);   

var attw = document.createAttribute("fill");       // Create a "class" attribute
attw.value = "#00FFFF";                           // Set the value of the class attribute
elemento.setAttributeNode(attw);   
}
</script>
E usando:
Codice:
 <button onclick="Colora(id1_h)">Cliccami</button>
Il path da invisibile diventa semitrasparente e quindi funge da evidenziatore di quello che c'è sotto.

Il problema mio è che le figure con cui devo avere a che fare sono così:
Codice:
<svg>
....
....

<g id="id1_h" ><path opacity="0" fill="#FFFFFF" d="M347.886,273.685c-8.352-5.711-8.352-5.711-8.352-5.711l-9.635-10.788 .... .... ...."/>
...
...
</svg>
Cioè l'attributo da cambiare non è dentro <g> ma dentro tutti i <path> che trovo sotto il <g> con quell'ID.

Qualcuno mi sa dare una mano ?

Grazie
das è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2015, 10:36   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Una volta che hai selezionato il g che ti serve puoi selezionare tutti i path al suo interno con getElementsByTagName:
https://developer.mozilla.org/en-US/...mentsByTagName

oppure se sei sicuro che al di sotto ci siano solo path direttamente con children:
https://developer.mozilla.org/en-US/...tNode/children
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2015, 10:57   #3
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1392
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Una volta che hai selezionato il g che ti serve puoi selezionare tutti i path al suo interno con getElementsByTagName:
https://developer.mozilla.org/en-US/...mentsByTagName

oppure se sei sicuro che al di sotto ci siano solo path direttamente con children:
https://developer.mozilla.org/en-US/...tNode/children
Ok grazie
das è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2015, 14:39   #4
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1392
Ma come mai se l'immagine svg è copiata direttamente all'interno dell html lo script funziona mentre se è importata con object invece no ?

Codice:
<html>
<head>
</head>
<body>
<object width=100%  height=100% id="contentarea" type="image/svg+xml" data="Esempio.SVG"></object>

	<script type="text/javascript">
function Colora(elemento) {
alert("vvvvv");
var att = document.createAttribute("opacity");       // Create a "class" attribute
att.value = 0.4;
var child = elemento.children;
var attw = document.createAttribute("fill");
attw.value = "#00FFFF";
for (i = 0; i < child.length; i++) {
	child[i].setAttributeNode(att);   
	child[i].setAttributeNode(attw); 
}
}
</script>



 <button onclick="Colora(hs13_x003B_R_x0028_B1A1_x0029__x003B_T_x0028_ABAB00000000042AA_x0029_)">Cliccami</button> 

</body>
</html>
In questo modo non funziona più.
das è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2015, 17:12   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Perché quando la importi tramite object non entra a far parte del DOM, diventa parte dello stato interno dell'object, quindi da javascript non ne hai visibilità.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2015, 18:39   #6
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1392
Ho risolto così:
Codice:
<script type="text/javascript">
function Colora(elemento) {
	var a = document.getElementById("svgObject");
	var svgDoc = a.contentDocument;
	var svgItem = svgDoc.getElementById(elemento);
var child = svgItem.children;
var att = document.createAttribute("opacity");
att.value = 0.4;
var attw = document.createAttribute("fill");
attw.value = "#00FFFF";
for (i = 0; i < child.length; i++) {
	child[i].setAttributeNode(att);   
	child[i].setAttributeNode(attw); 
}
}
</script>
Se volessi farlo accendere se è spento (opacity="0") o spegnere se è acceso (opacity="0.4") come dovrei fare ? In altre parole come faccio a leggere il valore dell'attributo anzichè impostarlo ?

Io ho provato a fare così ma non funziona :
Codice:
function Alterna(elemento) {
	var a = document.getElementById("svgObject");
	var svgDoc = a.contentDocument;
	var svgItem = svgDoc.getElementById(elemento);
var child = svgItem.children;
var att = document.createAttribute("opacity");
att.value = 0.4;
var attw = document.createAttribute("fill");
attw.value = "#00FFFF";
for (i = 0; i < child.length; i++) {
if (child[i].getAttributeNode("opacity")==0 )	{att.value = 0.4;}else{att.value = 0; }
	child[i].setAttributeNode(att);
	child[i].setAttributeNode(attw); 
}
}
das è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2015, 20:17   #7
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1392
Errore trovato:
[code]
if (child[i].getAttributeNode("opacity").value==0 )
[code]
das è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato WoW Forever provato: il MMORPG che la community ...
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
Sigma FP2 senza mirino né slitta ...
Huawei Pura 90 Plus, preordini aperti in...
Addio al limite di 1,5 °C: il nuovo ...
Tor sotto attacco: manipolati oltre 300 ...
Volkswagen ID. EVERY1: l'elettrica da 20...
eMudhra lascia i certificati TLS dopo il...
Torna l'ora solare: risparmiati 300 mili...
SBS amplia Pulse Power con nuovi power b...
Canva lancia Craft, il modello IA che pi...
iPhone Duo, la seconda generazione colme...
Lisa Su e la scelta strategica dietro il...
iPhone 18 si mostra nelle prime immagini...
Lenovo amplia la AI Library: cinque nuov...
La valutazione monstre di OpenAI si sgon...
Trump voleva rinominare l'Oceano Atlanti...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v