2017-04-04 2 views
1

Ich versuche, ein Skript zu erhalten Text auf meiner Seite mit unterschiedlichem Text und einem Link zu ersetzen. Ohne den Code funktioniert die Seite gut und ich kann Dinge tun, wie zum Beispiel in den Warenkorb legen, eine Produktnummer suchen (die durch einen mouseover-Befehl gesteuert wird), usw. Der Code funktioniert gut, er ersetzt den Text durch einen Link, aber wenn ich den Code eingefügt habe, führt die Seite nach einer Benutzereingabe keinen Code mehr aus (dh suche eine Produktnummer).-Code auf meiner Seite stoppt Code auf Seite vom Laufen

Jede Idee, warum dies meine Seite bricht?

window.addEventListener ? 
window.addEventListener("load",Name,false) : 
window.attachEvent && window.attachEvent("onload",Name); 
function Name(){ 
    if (document.getElementsByTagName('body')[0].innerText.indexOf("Text") > 
-1) { 
     var Var1 = document.getElementsByTagName('body')[0].innerHTML; 
    var Var2 = Var1.replace(/Text/gi,"<a href = 
\"https://www.example.com\">NewText;</a>"); 
    document.getElementsByTagName('body')[0].innerHTML = Var2; 

} 

} 

ich ursprünglich document.onload benutzte, habe ich versucht, window.onload und mehrere andere Event-Handler, brach alle auch die Seite. Ich habe gelesen, dass das Hinzufügen von Onload der richtige Weg ist, und habe das in den Code, den Sie hier sehen, integriert, aber keiner dieser Schritte, die ich unternommen habe, hat das Problem gelöst.

+0

'function() {' dies ein Syntaxfehler ist, werden Sie dieser Funktion einen Namen geben müssen. Etwas wie 'Funktion funcNameHere() {' – Titus

+0

Danke Titus. Ich hatte das in meinem ursprünglichen Code, ich vergaß es einfach einzutippen, als ich alles generisch für das Forum machte. Ich habe meinen Beitrag bearbeitet und habe immer noch das Problem. – TomM0419

+0

Geben Sie Ihren Code hier ein und Sie werden ein paar Probleme direkt neben dem Zeichen sehen. http://jshint.com/ – Yoda

Antwort

0

So stellt sich die Innerhtml des Körpers verhindert, dass meine Seite zu ersetzen out (aus einem unbekannten Grund ... dies ist ein Squarespace-Website) von beliebigen Code nach Last läuft. Daher funktionierte der obige Code (trotz einiger Syntaxprobleme), brach aber die Seite.

Ich korrigierte dies, indem ich spezifischere Elemente auf der Seite nach Klasse anregte, was einige Ratesätze erforderte, um den richtigen zu finden, der mein Element enthielt (auch hier ist es schwer, Quadrate zu entziffern), aber jetzt läuft alles gut.

Arbeitscode:

window.addEventListener ? 
window.addEventListener("load",FuncName,false) : 
window.attachEvent && window.attachEvent("onload",FuncName); 
function FuncName(){ 
    if (document.getElementsByTagName('body')[0].innerHTML.indexOf("word") > -1) 
{ 
     var Var1 = document.getElementsByClassName('ClassName');  
     for (var i = 0; i < Var1.length; i++){ 
    var Var2 = document.getElementsByClassName('ClassName')[i].innerHTML; 
    var Var3 = Var2.replace(/word/gi,"<a href = 
\"http://www.example.com\">NewWord</a>"); 
    document.getElementsByClassName('ClassName')[i].innerHTML = 
Var3; 

Ich habe eine Schleife hinzufügen hatte die mehrere Instanzen des Wortes zu decken Ich suche in verschiedenen Klassen, aber es gehen Sie. Hoffe, das hilft jemandem, der an einem ähnlichen Problem festhält.

Verwandte Themen