Parametre aktardığım bir javascript fonksiyonum var. Parametre, web sayfamdaki bir öğenin (gizli bir alan) kimliğini temsil ediyor. Bu öğenin değerini değiştirmek istiyorum.
function myFunc(variable){
var s= document.getElementById(variable);
s.value = 'New value'
}
Bunu yaptığımda, nesne null olduğu için değerin ayarlanamadığına dair bir hata alıyorum. Ancak nesnenin null olmadığını biliyorum çünkü tarayıcı tarafından oluşturulan html kodunda bunu görüyorum. Her neyse, hata ayıklamak için aşağıdaki kodu denedim
function myFunc(variable){
var x = variable;
var y = 'This-is-the-real-id'
alert(x + ', ' + y)
var s= document.getElementById(x);
s.value = 'New value'
}
Uyarı mesajı göründüğünde, her iki parametre de aynı, ancak yine de hata alıyorum. Ancak şunu yaptığımda her şey düzgün çalışıyor
var s= document.getElementById('This-is-the-real-id');
s.value = 'New value'
Bunu nasıl düzeltebilirim lütfen
DÜZENLE
Değerini ayarladığım öğe gizli alan ve sayfa yüklendikçe id dinamik olarak algılanıyor. Bunu $(document).ready fonksiyonuna eklemeyi denedim ama işe yaramadı
textarea sayfaya işlenmeden önce myFunc(değişken) çalıştırılırsa, null exception hatası alırsınız.
<html>
<head>
<title>index</title>
<script type="text/javascript">
function myFunc(variable){
var s = document.getElementById(variable);
s.value = "new value";
}
myFunc("id1");
</script>
</head>
<body>
<textarea id="id1"></textarea>
</body>
</html>
//Error message: Cannot set property 'value' of null
Bu nedenle, textarea'nızın sayfada var olduğundan emin olun ve ardından myFunc'u çağırın, window.onload veya $(document).ready işlevini kullanabilirsiniz. Umarım yardımcı olmuştur.
Verilen
<div id="This-is-the-real-id"></div>
sonra
function setText(id,newvalue) {
var s= document.getElementById(id);
s.innerHTML = newvalue;
}
window.onload=function() { // or window.addEventListener("load",function() {
setText("This-is-the-real-id","Hello there");
}
ne istersen yapacak
Verilen
<input id="This-is-the-real-id" type="text" value="">
sonra
function setValue(id,newvalue) {
var s= document.getElementById(id);
s.value = newvalue;
}
window.onload=function() {
setValue("This-is-the-real-id","Hello there");
}
ne istersen yapacak
function setContent(id, newvalue) {
var s = document.getElementById(id);
if (s.tagName.toUpperCase()==="INPUT") s.value = newvalue;
else s.innerHTML = newvalue;
}
window.addEventListener("load", function() {
setContent("This-is-the-real-id-div", "Hello there");
setContent("This-is-the-real-id-input", "Hello there");
})
<div id="This-is-the-real-id-div"></div>
<input id="This-is-the-real-id-input" type="text" value="">
aşağıdaki gibi deneyin işe yarayacaktır...
<html>
<head>
<script>
function displayResult(element)
{
document.getElementById(element).value = 'hi';
}
</script>
</head>
<body>
<textarea id="myTextarea" cols="20">
BYE
</textarea>
<br>
<button type="button" onclick="displayResult('myTextarea')">Change</button>
</body>
</html>