En utilisant innerHTML.remplacer pour remplacer le texte pour créer le lien
Je suis à l'aide de Sharepoint (WSS 3.0), qui est malheureusement très limité dans sa capacité à formater les questions de l'enquête (c'est à dire, il supprime les balises HTML que vous entrez). J'ai vu une solution ailleurs que nous a suggéré d'ajouter un peu de JS pour notre fichier de page maître, afin de permettre des sauts de ligne. Cela fonctionne à merveille, mais j'aimerais voir si nous pouvons nous permettre de liens.
Dans notre WSS enquêtes, je peux maintenant utiliser {{br}} d'où je veux un saut de ligne (cela fonctionne). J'ai essayé d'étendre le code pour permettre l'utilisation de balises link (par exemple, {{link1}}url{{link2}}Titre de l'URL{{link3}}; mais, cela ne fonctionne pas, sans doute parce que les mises à jour ne se passent pas comme un tout, et le navigateur, puis essaye de rendre morceau par morceau, de le confondre. (FF et IE montrent des résultats différents, mais tous deux échouent. Si je mélange de l'ordre de la JS ci-dessous -- c'est à dire, ne link3, 2 puis 1 -- la sortie des changements, mais ne fonctionne toujours pas.) Est-il une meilleure façon de le faire?
<script language="JavaScript">
var className;
className = 'ms-formlabel';
var elements = new Array();
var elements = document.getElementsByTagName('td');
for (var e = 0; e < elements.length; e++)
{
if (elements[e].className == className){
elements[e].innerHTML = elements[e].innerHTML.replace(/{{br}}/g,'<br/>');
elements[e].innerHTML = elements[e].innerHTML.replace(/{{link1}}/g,'<a href="');
elements[e].innerHTML = elements[e].innerHTML.replace(/{{link2}}/g,'">');
elements[e].innerHTML = elements[e].innerHTML.replace(/{{link3}}/g,'</a>');}
}
</script>
Vous devez vous connecter pour publier un commentaire.
Au lieu de modifier la propriété innerHTML en morceaux (le navigateur tente de mettre à jour le DOM chaque fois que vous changez de innerHTML, qui, si vous incomplète/cassé balisage, sera bien évidemment gâcher les choses), faire toutes vos modifications à l'encontre de votre propre variable de chaîne, puis remplacer l'ensemble de la innerHTML avec votre chaîne:
La réponse la plus simple serait de construire le innerHTML et de le remplacer une fois pour toutes:
La plus complexe, la réponse devrait être d'utiliser la capture des groupes dans votre regex et passer une fonction comme le 2e paramètre de remplacer les(), de sorte que l'utilisation d'un seul appel à remplacer() pour le HTML. Par exemple,
La deuxième solution est plus complexe et conduit à des moches, les regexes, mais il est plus efficace que d'appeler replace (), encore et encore.