How to set unique ID to SVG graph path elements. The graph is created using leaflet.js Path elements are dynamically generated and I need to style them individually, so I thought of giving them unique ID.
JavaScript
x
38
38
1
<svg pointer-events="none" class="leaflet-zoom-animated" width="900" height="665" viewBox="-75 -55 900 665" style="transform: translate3d(-75px, -55px, 0px);">
2
<g>
3
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M120 271L133 282L139 279L147 284L155 274L137 258z"></path>
4
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M98 284L119 275L125 288L105 295z"></path>
5
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M64 296L95 287L99 297L92 302L91 308L75 308L68 310z"></path>
6
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M160 302L168 309L173 305L179 311L178 317L187 323L196 310L171 288z"></path>
7
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M190 326L195 330L202 326L201 336L198 344L222 339L219 331L201 314z"></path>
8
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M155 311L148 334L151 340L181 343L186 337z"></path>
9
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M71 348L93 351L90 363L79 362L75 374L88 376L87 387L75 388L74 396L87 399L85 410L67 408z"></path>
10
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M53 429L83 452L78 498L67 493L46 453L43 442L44 429z"></path>
11
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M90 521L107 533L118 532L111 519L108 503L99 501L92 505z"></path>
12
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M91 453L90 463L95 469L87 475L93 487L99 495L111 491L113 469L119 452L115 444z"></path>
13
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M131 414L143 416L154 405L175 395L191 390L214 386L233 385L236 364L150 356L141 365z"></path>
14
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M160 239L168 251L176 246L174 237L185 235L191 229L179 217z"></path>
15
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M178 243L188 254L208 234L213 223L200 216z"></path>
16
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M191 268L202 279L209 272L204 266L224 249L228 243L217 233z"></path>
17
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M225 307L229 297L233 304L247 291L242 285L249 277L258 284L247 313L237 320z"></path>
18
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M223 309L231 297L239 301L246 290L251 276L257 285L255 295L239 319z"></path>
19
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M274 296L281 277L328 267L332 279L330 286z"></path>
20
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M303 216L317 262L324 261L327 236L322 211z"></path>
21
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M302 213L317 260L325 260L328 244L321 211z"></path>
22
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M214 187L223 197L237 209L245 213L252 207L231 189L247 179L242 167z"></path>
23
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M309 172L315 190L310 197L300 196L296 177z"></path>
24
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M51 408L44 406L38 345L53 350z"></path>
25
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M31 302L36 330L51 331L47 301z"></path>
26
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M243 169L253 189L283 173L276 152z"></path>
27
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M281 152L291 173L295 151z"></path>
28
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M68 317L71 326L76 331L89 334L91 327L77 316z"></path>
29
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M128 293L141 302L146 293L139 283z"></path>
30
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M266 205L284 202L287 190L283 181L275 187L270 193L264 190L261 196z"></path>
31
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M211 270L220 277L242 255L247 240L236 237L233 248z"></path>
32
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M97 385L96 410L113 413L121 387L104 387z"></path>
33
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M251 320L268 385L355 372L365 423L398 420L378 366L391 364L402 377L423 378L429 351L490 325L513 320L547 295L588 284L587 270L570 258L536 252L492 240L464 276z"></path>
34
<path class="hotspot-default leaflet-interactive" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M535 163L501 230L534 238L555 233L573 241L599 259L606 275L608 285L627 300L655 331L655 356L653 377L672 355L685 326L687 314L695 305L698 289L702 278L702 269z"></path>
35
<path class="hotspot-default leaflet-interactive hotspot-active" stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd" d="M363 280L429 268L463 250L483 223L503 190L517 162L425 84L315 133z"></path>
36
</g>
37
</svg>
38
Please help.
Advertisement
Answer
As I’ve commented you don’t need an id for styling. You can use nth-of-type or nth-child.
JavaScript
1
3
1
path:nth-of-type(1){stroke:red}
2
path:nth-of-type(2){stroke:green}
3
Also you can reduce verbosity by moving stroke="#3388ff" stroke-opacity="1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="#3388ff" fill-opacity="0.2" fill-rule="evenodd"
in CSS
JavaScript
1
13
13
1
path {
2
stroke: #3388ff;
3
stroke-opacity: 1;
4
stroke-width: 3;
5
stroke-linecap: round;
6
stroke-linejoin: round;
7
fill: #3388ff;
8
fill-opacity: 0.2;
9
fill-rule: evenodd;
10
}
11
12
path:nth-of-type(1){stroke:red}
13
path:nth-of-type(2){stroke:green}
JavaScript
1
37
37
1
<svg pointer-events="none" class="leaflet-zoom-animated" width="900" height="665" viewBox="25 60 700 500" >
2
<g id="kk">
3
<path class="hotspot-default leaflet-interactive" d="M120 271L133 282L139 279L147 284L155 274L137 258z"></path>
4
<path class="hotspot-default leaflet-interactive" d="M98 284L119 275L125 288L105 295z"></path>
5
<path class="hotspot-default leaflet-interactive" d="M64 296L95 287L99 297L92 302L91 308L75 308L68 310z"></path>
6
<path class="hotspot-default leaflet-interactive" d="M160 302L168 309L173 305L179 311L178 317L187 323L196 310L171 288z"></path>
7
<path class="hotspot-default leaflet-interactive" d="M190 326L195 330L202 326L201 336L198 344L222 339L219 331L201 314z"></path>
8
<path class="hotspot-default leaflet-interactive" d="M155 311L148 334L151 340L181 343L186 337z"></path>
9
<path class="hotspot-default leaflet-interactive" d="M71 348L93 351L90 363L79 362L75 374L88 376L87 387L75 388L74 396L87 399L85 410L67 408z"></path>
10
<path class="hotspot-default leaflet-interactive" d="M53 429L83 452L78 498L67 493L46 453L43 442L44 429z"></path>
11
<path class="hotspot-default leaflet-interactive" d="M90 521L107 533L118 532L111 519L108 503L99 501L92 505z"></path>
12
<path class="hotspot-default leaflet-interactive" d="M91 453L90 463L95 469L87 475L93 487L99 495L111 491L113 469L119 452L115 444z"></path>
13
<path class="hotspot-default leaflet-interactive" d="M131 414L143 416L154 405L175 395L191 390L214 386L233 385L236 364L150 356L141 365z"></path>
14
<path class="hotspot-default leaflet-interactive" d="M160 239L168 251L176 246L174 237L185 235L191 229L179 217z"></path>
15
<path class="hotspot-default leaflet-interactive" d="M178 243L188 254L208 234L213 223L200 216z"></path>
16
<path class="hotspot-default leaflet-interactive" d="M191 268L202 279L209 272L204 266L224 249L228 243L217 233z"></path>
17
<path class="hotspot-default leaflet-interactive" d="M225 307L229 297L233 304L247 291L242 285L249 277L258 284L247 313L237 320z"></path>
18
<!--<path class="hotspot-default leaflet-interactive" d="M223 309L231 297L239 301L246 290L251 276L257 285L255 295L239 319z"></path>-->
19
<path class="hotspot-default leaflet-interactive" d="M274 296L281 277L328 267L332 279L330 286z"></path>
20
<!--<path class="hotspot-default leaflet-interactive" d="M303 216L317 262L324 261L327 236L322 211z"></path>-->
21
<path class="hotspot-default leaflet-interactive" d="M302 213L317 260L325 260L328 244L321 211z"></path>
22
<path class="hotspot-default leaflet-interactive" d="M214 187L223 197L237 209L245 213L252 207L231 189L247 179L242 167z"></path>
23
<path class="hotspot-default leaflet-interactive" d="M309 172L315 190L310 197L300 196L296 177z"></path>
24
<path class="hotspot-default leaflet-interactive" d="M51 408L44 406L38 345L53 350z"></path>
25
<path class="hotspot-default leaflet-interactive" d="M31 302L36 330L51 331L47 301z"></path>
26
<path class="hotspot-default leaflet-interactive" d="M243 169L253 189L283 173L276 152z"></path>
27
<path class="hotspot-default leaflet-interactive" d="M281 152L291 173L295 151z"></path>
28
<path class="hotspot-default leaflet-interactive" d="M68 317L71 326L76 331L89 334L91 327L77 316z"></path>
29
<path class="hotspot-default leaflet-interactive" d="M128 293L141 302L146 293L139 283z"></path>
30
<path class="hotspot-default leaflet-interactive" d="M266 205L284 202L287 190L283 181L275 187L270 193L264 190L261 196z"></path>
31
<path class="hotspot-default leaflet-interactive" d="M211 270L220 277L242 255L247 240L236 237L233 248z"></path>
32
<path class="hotspot-default leaflet-interactive" d="M97 385L96 410L113 413L121 387L104 387z"></path>
33
<path class="hotspot-default leaflet-interactive" d="M251 320L268 385L355 372L365 423L398 420L378 366L391 364L402 377L423 378L429 351L490 325L513 320L547 295L588 284L587 270L570 258L536 252L492 240L464 276z"></path>
34
<path class="hotspot-default leaflet-interactive" d="M535 163L501 230L534 238L555 233L573 241L599 259L606 275L608 285L627 300L655 331L655 356L653 377L672 355L685 326L687 314L695 305L698 289L702 278L702 269z"></path>
35
<path class="hotspot-default leaflet-interactive hotspot-active" d="M363 280L429 268L463 250L483 223L503 190L517 162L425 84L315 133z"></path>
36
</g>
37
</svg>
However if you still think you need to add `id-s in JavaScript, here is how I would do it (btw @DogukanCavus is perfectly valid):
JavaScript
1
2
1
let paths = document.querySelectorAll(".leaflet-zoom-animated path");
2
paths.forEach((p,i)=>{p.id = `path${i}`})
JavaScript
1
14
14
1
path {
2
stroke: #3388ff;
3
stroke-opacity: 1;
4
stroke-width: 3;
5
stroke-linecap: round;
6
stroke-linejoin: round;
7
fill: #3388ff;
8
fill-opacity: 0.2;
9
fill-rule: evenodd;
10
}
11
12
13
#path0{stroke:red}
14
#path1{stroke:green}
JavaScript
1
37
37
1
<svg pointer-events="none" class="leaflet-zoom-animated" width="900" height="665" viewBox="25 60 700 500" >
2
<g id="kk">
3
<path class="hotspot-default leaflet-interactive" d="M120 271L133 282L139 279L147 284L155 274L137 258z"></path>
4
<path class="hotspot-default leaflet-interactive" d="M98 284L119 275L125 288L105 295z"></path>
5
<path class="hotspot-default leaflet-interactive" d="M64 296L95 287L99 297L92 302L91 308L75 308L68 310z"></path>
6
<path class="hotspot-default leaflet-interactive" d="M160 302L168 309L173 305L179 311L178 317L187 323L196 310L171 288z"></path>
7
<path class="hotspot-default leaflet-interactive" d="M190 326L195 330L202 326L201 336L198 344L222 339L219 331L201 314z"></path>
8
<path class="hotspot-default leaflet-interactive" d="M155 311L148 334L151 340L181 343L186 337z"></path>
9
<path class="hotspot-default leaflet-interactive" d="M71 348L93 351L90 363L79 362L75 374L88 376L87 387L75 388L74 396L87 399L85 410L67 408z"></path>
10
<path class="hotspot-default leaflet-interactive" d="M53 429L83 452L78 498L67 493L46 453L43 442L44 429z"></path>
11
<path class="hotspot-default leaflet-interactive" d="M90 521L107 533L118 532L111 519L108 503L99 501L92 505z"></path>
12
<path class="hotspot-default leaflet-interactive" d="M91 453L90 463L95 469L87 475L93 487L99 495L111 491L113 469L119 452L115 444z"></path>
13
<path class="hotspot-default leaflet-interactive" d="M131 414L143 416L154 405L175 395L191 390L214 386L233 385L236 364L150 356L141 365z"></path>
14
<path class="hotspot-default leaflet-interactive" d="M160 239L168 251L176 246L174 237L185 235L191 229L179 217z"></path>
15
<path class="hotspot-default leaflet-interactive" d="M178 243L188 254L208 234L213 223L200 216z"></path>
16
<path class="hotspot-default leaflet-interactive" d="M191 268L202 279L209 272L204 266L224 249L228 243L217 233z"></path>
17
<path class="hotspot-default leaflet-interactive" d="M225 307L229 297L233 304L247 291L242 285L249 277L258 284L247 313L237 320z"></path>
18
<!--<path class="hotspot-default leaflet-interactive" d="M223 309L231 297L239 301L246 290L251 276L257 285L255 295L239 319z"></path>-->
19
<path class="hotspot-default leaflet-interactive" d="M274 296L281 277L328 267L332 279L330 286z"></path>
20
<!--<path class="hotspot-default leaflet-interactive" d="M303 216L317 262L324 261L327 236L322 211z"></path>-->
21
<path class="hotspot-default leaflet-interactive" d="M302 213L317 260L325 260L328 244L321 211z"></path>
22
<path class="hotspot-default leaflet-interactive" d="M214 187L223 197L237 209L245 213L252 207L231 189L247 179L242 167z"></path>
23
<path class="hotspot-default leaflet-interactive" d="M309 172L315 190L310 197L300 196L296 177z"></path>
24
<path class="hotspot-default leaflet-interactive" d="M51 408L44 406L38 345L53 350z"></path>
25
<path class="hotspot-default leaflet-interactive" d="M31 302L36 330L51 331L47 301z"></path>
26
<path class="hotspot-default leaflet-interactive" d="M243 169L253 189L283 173L276 152z"></path>
27
<path class="hotspot-default leaflet-interactive" d="M281 152L291 173L295 151z"></path>
28
<path class="hotspot-default leaflet-interactive" d="M68 317L71 326L76 331L89 334L91 327L77 316z"></path>
29
<path class="hotspot-default leaflet-interactive" d="M128 293L141 302L146 293L139 283z"></path>
30
<path class="hotspot-default leaflet-interactive" d="M266 205L284 202L287 190L283 181L275 187L270 193L264 190L261 196z"></path>
31
<path class="hotspot-default leaflet-interactive" d="M211 270L220 277L242 255L247 240L236 237L233 248z"></path>
32
<path class="hotspot-default leaflet-interactive" d="M97 385L96 410L113 413L121 387L104 387z"></path>
33
<path class="hotspot-default leaflet-interactive" d="M251 320L268 385L355 372L365 423L398 420L378 366L391 364L402 377L423 378L429 351L490 325L513 320L547 295L588 284L587 270L570 258L536 252L492 240L464 276z"></path>
34
<path class="hotspot-default leaflet-interactive" d="M535 163L501 230L534 238L555 233L573 241L599 259L606 275L608 285L627 300L655 331L655 356L653 377L672 355L685 326L687 314L695 305L698 289L702 278L702 269z"></path>
35
<path class="hotspot-default leaflet-interactive hotspot-active" d="M363 280L429 268L463 250L483 223L503 190L517 162L425 84L315 133z"></path>
36
</g>
37
</svg>