2016-04-02 30 views
1

SorunumFonksiyon kalır tanımsız

var script = document.createElement('script');  
    script.setAttribute('type', 'text/javascript'); 
    document.getElementById("fastexe").appendChild (script); 

(script div ebeveyn bu komut dosyası öncedir) javascript bir komut dosyası etiketi yalak oluşturmak ve ne zaman bir işlev eklemek olmasıdır içinde seversin

script.innerHTML = "function in_my_script(){ \n"; 
    script.innerHTML += "alert('test'); \n }"; 

Ben konsolu üzerinden, hatta böyle benim fonksiyonunu (function_in_my_script) aramak çalıştığınızda:

script.innerHTML += "\n function_in_my_script();"; 

Açıkça görülmeyen bir neden için bir işlev tanımlanmamış hatayı alıyorum. Farklı fonksiyon isimleri ile çalıştım, fonksiyonun içinde hiçbir şey ve fonksiyondaki farklı uyarılar yoktu ama hiçbir şey sonucu değiştirmedi.

Neden işlevin undefined kaldığını anlamıyorum. Yardım ettiğin için teşekkür ederim.

+1

Hangi tarayıcıyı yapıyorsun içinde? Afaik, bazı komut dosyalarında 'innerHTML 'ile ilgili sorunlar var – Bergi

+1

Bu betik elemanını DOM'a eklemeden önce doldurmayı denemelisiniz. Afaik, değerlendirilecek tek zamandır. – Bergi

+0

Fonksiyonunuz 'in_my_script' değil,' function_in_my_script' olarak adlandırılır. Bu sadece örnek kod ise, lütfen sorunuz [değiştir]. – Xufox

cevap

1

SCRIPT öğesinin innerHTML öğesine bir dize her eklediğinizde, tarayıcı öğeyi çalıştırmayı dener. Bu, SCRIPT yalnızca function in_my_script(){ olduğunda bir sözdizimi hatasına yol açar.

Bunun yerine, bir değişkene komut dosyasının içeriğini oluşturmak ve sonra tek seferde script.innerHTML ekleyin:

var script = document.createElement('script'), 
 
    s; 
 

 
script.setAttribute('type', 'text/javascript'); 
 
document.getElementById("fastexe").appendChild(script); 
 

 
s = "function in_my_script(){ \n"; 
 
s += "alert('test'); \n }"; 
 
s += "\n in_my_script();"; 
 

 
script.innerHTML= s;
<div id="fastexe"></div>

+0

Çalışıyor! Gerçekten çok teşekkür ederim, asla bu şekilde yorumlanamazdı! – Apotheose