Newsgroup: it.comp.lang.javascript
Titolo: modificare contenuto stringa html con js

Mi presento, sono un hobbysta della fotografia, con scarsissima conoscenza
dei linguaggi HTL e js.
Per la preparazione delle mie gallerie fotografiche uso un template di
Lightroom al quale ho aggiunto queste due righe per aprire Google map nella
posizione in cui è stata fatta la foto:	
 
	<a href="
http://maps.google.com/maps?q=$image.metadata.title
">
	 <p align="center">$image.metadata.title</p>
Sarebbe perfetto, se non fosse che la variabile $image.metadata.title è
composta con caratteri incompatibili, ad esempio 17°58'34" N 102°38'10" E
e a google arriva ovviamente solo il primo pezzo 17°58'34, fino ai doppi
apici.
Ho tentato di inserire uno script per decodificare i caratteri, ma non so
come leggere la veriabile nello script e poi come leggerla modificata
nell'html.
Pensavo una cosa simile:
Variabile  $image.metadata.title
 
	<SCRIPT LANGUAGE="JavaScript">
  Importo la stringa,la decodifico e diventa 
17&deg 58'34&quot; N 102&deg 38'10&quot
la chiamo mappa
</script>
	<a href="
http://maps.google.com/maps?q=$mappa
">
	 <p align="center">$image.metadata.title</p>
	 </div>
Mi affido alla vostra generosità.
-- 
Nando
http://www.nandoferrari.it

 Variabile  $image.metadata.title
Non ho capito: dove sta questa variabile?
Riesci a fare un qualcosa del tipo
 var miolink=tuavariabile;
Come fai? Dove ci sono le doppie virgolette si interromperà e segnalerà 
errore js ... hai usato le singole virgolette per indicare la stringa?
Posta qualche riga di codice ...

 errore js ... hai usato le singole virgolette per indicare la stringa?
Prima di tutto grazie.
Delimitando la stringa con il singolo apice si ferma ancora prima
Considera che sono veramente ignorante, sa hai qualche soluzione, se non
chiedo troppo, ti prego di scrivermi il codice.
Non essendo molto lungo, e capendono poco, ti passo l'intero template:
<%
--[[ Define some variables to make locating other resources easier
     firstPage was defined in our manifest.]]
    local image = getImage( index )
    local theRoot = ".."
    local others = "."
    local mySize = "large"
%>
<% --[[ Include the page header]] %>
<%@ include file="head.html" %>
  <% --[[ Main image area ]] %>
    <div id="stage2">
    <div id="previewFull" class="borderTopLeft borderBottomRight">
      <div id="detailTitle" class="detailText">
             </div>
	  <% --[[ Pagination section ]] %>
      <div class="detailNav">
        <ul>
          <lr:Pagination>		 
            <lr:PreviousEnabled>
 
              <li class="previous"> <a class="paginationLinks detailText"
href="$link"><%= LOC "$$$/AgWPG/Templates/HTML/output/Previous=Previous"
%></a> </li>
            </lr:PreviousEnabled>
            <lr:PreviousDisabled>
              <li class="previous detailText"> <%= LOC
"$$$/AgWPG/Templates/HTML/output/Previous=Previous" %> </li>
            </lr:PreviousDisabled>
            <li class="index"> <a href="$gridPageLink" class="detailLinks
detailText"><%= LOC "$$$/AgWPG/Templates/HTML/output/Index=Index" %></a>
</li>
            <lr:NextEnabled>
              <li class="next"> <a class="paginationLinks detailText"
href="$link"><%= LOC "$$$/AgWPG/Templates/HTML/output/Next=Next" %></a>
</li>
            </lr:NextEnabled>
            <lr:NextDisabled>
              <li class="next detailText"> <%= LOC
"$$$/AgWPG/Templates/HTML/output/Next=Next" %> </li>
            </lr:NextDisabled>
          </lr:Pagination>
        </ul>
      </div>
<%
	--[[
		Logic for centering the image on the page.  We've decided to implement a
rather complicated
		layout system for the image depending on whether it can fit nicely in the
same area
		occupied by the grid.  That coupled with the fact that HTML doesn't
center things very
		well means its a little harder yet.  The solution we adopt is to
calculate the left margin
		for the image, and then position the element manually.
		]]
    local imageBorderWidth = 0
    local imgWidth = image.renditions.large.width
    local imgHeight = image.renditions.large.height
    if model.nonCSS.showImageBorderLarge then
        imageBorderWidth = model.nonCSS.imageBorderWidth
    end
    local gridDefinedWidth = model.nonCSS.numCols * 161 + 1
    local imagePlusBorderDefinedWith = 2 * imageBorderWidth +
model.photoSizes.large.width + 30
    local stageWidth = math.max( gridDefinedWidth,
imagePlusBorderDefinedWith )
    local previewX = math.floor( math.max( 15, ( stageWidth - imgWidth ) /
2 ) ) - imageBorderWidth
%>
      <a href="$gridPageLink">
      <div style="margin-left:<%= previewX %>px;&quot;&gt;
        <%
          local pathToANode="parentNode.parentNode"
          if model.nonCSS.dropShadows then
            pathToANode = "parentNode.parentNode.parentNode.parentNode" %>
          <div class=" dropShadow">
            <div class="inner">
              <% end %>
                <img src="images/large/<%= image.exportFilename %>.jpg"
                    class="previewFullImage preview"
                    id="previewImage"
                    alt="$image.metadata.title"
                    <% if mode == 'preview' then %>
                    width=<%= imgWidth %>
                    height=<%= imgHeight %>
                    <% end %>
                    onclick="var node=<%= pathToANode %>; if( node.click )
{ return node.click(); } else { return true; }">
               <% if model.nonCSS.dropShadows then %>
             </div>
          </div>
        <% end %>
      </div>
      </a>
      <div style="height:5px; clear:both;"></div>
	  <% --[[ Caption ]] %>
      <div id="detailCaption" class="detailText">
	        </div>
			        <p align="center">$image.metadata.description</p></div>
		<p align="center">$image.metadata.title</p></div>
 
		<a href="
http://maps.google.com/maps?q=$image.metadata.title
">
	 <p align="center">$image.metadata.title</p>
 
				    </div>
</div>
  <div class="clear">
  </div>
<% --[[ Include the page footer]] %>
<%@ include file="foot.html" %>
-- 
Nando
http://www.nandoferrari.it

 		<a href="
http://maps.google.com/maps?q=
$image.metadata.title">
te la sparo:
<a href="" onclick="return encoda(this)">
<script type="text/javascript">
var url='$image.metadata.title';
 function encoda(sender) {
	sender.href="
http://maps.google.com/maps?q=
"+encodeURI(url);
	return true;
 }
</script>

 </script>
Purtrppo non funzia.
Un'ultima domanda, come posso leggere dallo script il valore della
variabile $image.metadata.title?
Grazie e buon weekend.
-- 
Nando
http://www.nandoferrari.it

 variabile $image.metadata.title?
Non ne ho la più pallida idea, non conosco questo pseudolinguaggio ... 
guardando il tuo codice sembra che basti mettere $nomevar, e client-side 
arriva il valore della variabile server-side  (e quindi dovresti trovarla 
nella var "url"). Ma sembra che così non sia.
Controlla nel sorgente html arrivato al browser e vedi cosa c'è scritto in
 var url='...'; //ha convertito la var server-side?

 doppi apici.
Non ho ben capito cosa ti serve e come funziona la template, però posso
dirti che se vuoi inserire quei dati in un URL, devi codificarli così:
17%b058%2734%22%20N%20102%b038%2710%22
    ..._skipped!_
-- 
    * b *
  *   y   *
*   Piero   *
#v+
-carpe diem-
#v-
 

  var url='...'; //ha convertito la var server-side?
Ho inserito questo codice:
<a href="
http://maps.google.com/maps?q=$image.metadata.title
">	
<a href="" onclick="return encoda(this)">				
<script type="text/javascript">
var url='$image.metadata.title';
 function encoda(sender) {
	sender.href="
http://maps.google.com/maps?q=
"+encodeURI(url);
	return true;
 }
</script>
La variabile viene letta, come puoi vedere a quesro indirizzo, ma non trovo
alcuna scritta cliccabile, non so andare oltre.
http://www.nandoferrari.it/prova/content/IMG_1817_large.html
Ti ringrazio molto, non vorrei romperti oltre.
Ciao
-- 
Nando
http://www.nandoferrari.it

 href="" onclick="return encoda(this)"> <script type="text/javascript">
L'anchor che ti ho indicato va sostituito al precedente ... perché hai 
messo 2 anchor?
Manca la chiusura, inoltre.

  var url='...'; //ha convertito la var server-side?
La stringa url viene letta cosě:
var url='17°58'34" N 102°38'10" E';
Queso lo manda in errore, penso che la variabile non possa essere letta
intera, o dico cazzate?
-- 
Nando
http://www.nandoferrari.it



Ho tolto il primo e chiuso, ma non cambia niente, come ti detto nell'altro
messaggio credo che la struttura della variabile lo metta in crisi.
-- 
Nando
http://www.nandoferrari.it

 la variabile non possa essere letta intera, o dico cazzate?
Corretto. Però in javascript occorrono virgolette (singole o doppie) per 
identificare una stringa.
Si risolve server-side, basta un replace di ' con \'. La tua stringa deve 
diventare quindi
 var url='17°58\'34" N 102°38\'10" E';
Tutti i linguaggi server-side hanno una funzionalità semplice come il 
replace (o al massimo è riproducibile con un ciclo tra i caratteri), ma 
non conoscendo questo pseudolinguaggio non saprei dirti. Ma non esiste un 
forum, newsgroup o altro che parla di questo linguaggio server-side?
Lato client non mi viene in mente come poter dichiarare una stringa 
contenente sia singole che doppie virgolette senza usare \



Il linguaggio credo sia Adobe ActionScript 3, ho trovato due gruppi, uno
con 7 membri, un altro con 1 membro.:-)
Adesso che trovato la causa, cerco in quella direzione, prima o poi trovo.
Grazie infinite, troppo gentile e paziente.


 Il linguaggio credo sia Adobe ActionScript 3
Allora basta cercare un qualcosa tipo "actionscript replace" con google; 
il primo che ho trovato:
 
http://www.mmkit.com/viewtopic.php?topic=6334
oppure
 
http://www.actionscript.org/forums/showthread.php3?t=29786
Sostanzialmente, ti dice di fare uno split (nel tuo caso, per la 
virgoletta singola), e poi ricomporre la stringa (con \' anziché ')



Sto editando il template, con estensione html, con un editor visuale,
NamoWebEditor, ma non riesco ad inserire il testo in alcun modo, mi va
sempre in errore.
Che sia un oroblema dell'editor o mio?
-- 
Nando
http://www.nandoferrari.it

 Che sia un oroblema dell'editor o mio?
boh, non so cosa sia ... perché non provi con un normale notepad? io uso 
notepad++



Si nota che sono un vecchio pensionato, da bambino al mio paese sono
passati i tedeschi poi gli americani.
Il mio problema, non ridere, è come scrivere.
All'interno della pagina come inserisco le righe che trovo.
Tra quale tag le racchiudo?
-- 
Nando
http://www.nandoferrari.it



Ho trovato, non merito mio, ma di google.
E' bastata una riga che toglie i doppi apici.
Grazie anche al tuo sostegno non mi sono arreso.
Fra qualche giorno nelle mie gallerie recenti, dal 2008 in poi ci sarà il
link alla mappa.
Ciao.
-- 
Nando
http://www.nandoferrari.it