Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
Un proiettore economico, che fa della portabilità e immediatezza i suoi punti di forza. Adatto per una camera da letto o per la casa vacanze, è basato su sistema proprietario Linux ma offre piena compatibilità ufficiale a Netflix
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
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: 1388
[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: 2793
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: 1388
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: 1388
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: 2793
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: 1388
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: 1388
Errore trovato:
[code]
if (child[i].getAttributeNode("opacity").value==0 )
[code]
das è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
OpenAI taglia i prezzi di due modelli GP...
RTX Spark pronto a dominare anche i tabl...
Il primo telefono davvero senza bordi no...
DeepSeek V4-Flash, API in beta pubblica:...
La crisi delle memorie continuerà: ecco ...
Dati su disfunzione erettile e perdita d...
Arriva e-invoice, il servizio di fiskaly...
Champions League, F1 e MotoGP: ecco la p...
Amazon alza a 220 miliardi le stime sugl...
World of Warcraft e Dungeons & Drago...
AXOL Server ridisegna l'infrastruttura d...
MSI ha ucciso AMD EXPO ULL? High-Efficie...
Falso Portale dell'Automobilista ruba pa...
Apple chiude il miglior trimestre di giu...
Sony tira dritto sull'addio ai dischi Pl...
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: 19:31.


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