2016-07-19 15 views
-2

Wie zu verwenden getElementById(function_parameter)?Wie getElementById (function_parameter)

Hier Param1 ist eine dynamisch übergebene ID und ich bekomme den folgenden Fehler in IE11, wenn ich den obigen Code verwenden. "Unable Eigenschaft 'Stil' von undefined oder null Referenz bekommen"

Es wird wie unten genannt:

<a class="someClass1" id="customID1" name="customName1" onClick="javascript:myFunction('customID1');">Custom1</a> 
 

 
<a class="someClass2" id="customID2" name="customName2" onClick="javascript:myFunction('customID2');">Custom2</a> 
 

 
<a class="someClass3" id="customID3" name="customName3" onClick="javascript:myFunction('customID3');">Custom3</a>

+2

Haben überprüfen Sie, ob das Element gibt es? Wenn Sie 'myFunction (param1) 'aufrufen, sollte ein Element in Ihrer Seite mit dem Attribut' id == param1 'vorhanden sein. –

+0

Versuchen Sie zuerst, den Parameter zu protokollieren, um sicherzustellen, dass der erwartete Wert an die Funktion übergeben wird. – niyasc

+2

Bitte geben Sie das entsprechende HTML an, dann können wir sagen, was falsch ist. –

Antwort

5

Der Code gearbeitet, es war einfach voller Tippfehler .

  1. Die ersten a senden den falschen Parameter zur Funktion.
  2. Alle onclick als Start ", aber kein Ende.

Nachfolgend finden Sie eine Arbeits Schnipsel:

function myFunction(param1) { 
 
    document.getElementById(param1).style.color = "#E66C2C"; 
 
}
<a class="someClass1" id="customID1" name="customName1" onClick="javascript:myFunction('customID1',this);">Custom</a> 
 

 
<a class="someClass2 " id="customID2" name="customName2 " onClick="javascript:myFunction('customID2');">Custom2</a> 
 

 
<a class="someClass3" id="customID3" name="customName3" onClick="javascript:myFunction('customID3');">Custom3</a>

Eine bessere Art

Gerade binden durch class und verwenden target:

//The function that handles the click 
 
//This function takes the event and the desired class as arguments 
 
function handleClick(e, c, func) { 
 
    e = e || window.event; 
 
    //Get target 
 
    var target = e.target || e.srcElement; 
 
    //Test for right class 
 
    var hasClass = false; 
 
    for (var i = 0; i < target.className.split(" ").length; i++) { 
 
    if (target.className.split(" ")[i] == c.toString()) { 
 
     hasClass = true; 
 
     break; 
 
    } 
 
    } 
 
    if (hasClass === true) { 
 
    func(target); 
 
    } 
 
} 
 

 
//Function to bind click events on class 
 
function bindClassEventClick(cls, func) { 
 
    if (document.body.addEventListener) { 
 
    document.body.addEventListener('click', function(e) { 
 
     handleClick(e, cls, func) 
 
    }, false); 
 
    } else { 
 
    document.body.attachEvent('onclick', function(e) { 
 
     handleClick(e, cls, func) 
 
    }); //for IE 
 
    } 
 
} 
 

 
//Bind event "someClass" click 
 
bindClassEventClick('someClass', function(target) { 
 
    target.style.color = "#E66C2C"; 
 
}); 
 
bindClassEventClick('someClass2', function(target) { 
 
    target.style.color = "red"; 
 
});
<a class="someClass">Custom1</a> 
 
<a class="someClass2">Custom2</a> 
 
<a class="someClass">Custom3</a>

Und dann wieder, in diesem Stadium könnten Sie auch nur jQuery() implementieren.

jQuery

jQuery ist eine Bibliothek für den build spezif Zweck der Benutzerinteraktion mit dem DOM Lockerung und erzeugen ein einheitliches Verhalten Quer Browser.

jQuery(".someClass").on("click", function() { 
 
    jQuery(this).css("color", "#E66C2C") 
 
}); 
 
jQuery(".someClass2").on("click", function() { 
 
    jQuery(this).css("color", "red") 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<a class="someClass">Custom1</a> 
 
<a class="someClass2">Custom2</a> 
 
<a class="someClass">Custom3</a>