Ich verwende Sharepoint (WSS 3.0), der leider nur sehr begrenzt in der Lage ist, Umfragefragen zu formatieren (d. H. Es streift jeden eingegebenen HTML-Code). Ich sah eine Lösung an anderer Stelle, die vorschlug, dass wir unserer Masterseitendatei einige JS hinzufügen, um Zeilenumbrüche zu ermöglichen. Das funktioniert wunderbar, aber ich würde gerne sehen, ob wir auch Links zulassen können.Verwenden von innerHTML.replace, um Text zu ersetzen, um einen Link zu erstellen
In unseren WSS-Umfragen kann ich jetzt {{br}} überall dort verwenden, wo ich einen Zeilenumbruch haben möchte (funktioniert). Ich habe versucht, den Code zu erweitern, um die Verwendung von Link-Tags zu ermöglichen (zB {{link1}} url {{link2}} URL-Titel {{link3}}, aber dies funktioniert nicht, vermutlich weil die Updates nicht sind passiert als Ganzes, und der Browser versucht dann, es Stück für Stück zu rendern, es zu verwirren. (FF und IE zeigen unterschiedliche Ergebnisse, aber beide scheitern. Wenn ich die Reihenfolge des JS unten verwechsle - also link3, 2 und dann 1 - der Ausgang ändert auch, aber immer noch nicht) gibt es einen besseren Weg, dies zu tun
<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>
Das ist sinnvoll, aber es klingt so, als müsste ich die URL zwischen den Tags {{link1}} und {{link2}} und dem Titel zwischen {{link2}} und {{link3 }} Tags, um den gesamten Link zu bilden und alles auf einmal zu ersetzen. Entschuldige meine Unwissenheit, aber weißt du, wie ich das erreichen würde? – Mark
innerHTML ist im Grunde nichts anderes als eine Zeichenkette, also manipuliert man mit newHTML nur eine Zeichenkette. Es wird nur geparst und in das DOM eingefügt, sobald Sie die innerHTML des Elements manipulieren. –
Okay, ich denke ich verstehe zumindest auf hohem Niveau. (Und ich danke Ihnen allen für Ihre schnellen Antworten.) Wenn ich den Code oben/unten hinzufüge, lande ich mit einer Handvoll "undefinierten" Textstücken auf meinen WSS-Seiten (auf allen Seiten, nicht nur auf denen mit { {link}} Tags). Es scheint etwas mit 'var newHTML = elements [e] .innerHTML;' zu tun zu haben, als ob ich diese Zeile kommentieren würde, die Fehler verschwinden (aber natürlich wird nichts ersetzt). Irgendwelche Ideen? – Mark