2017-08-22 7 views
-1

私のプロジェクトでは、以下のようなJavaScript関数があります。JavaScriptのグローバル変数返り値が未定義

function refTable(clickon) { 

    t_threads = document.getElementById("tab_threads"); 
    //Activate timeline for specific thread on active thread onclick in table 
    t_line = document.getElementById("tline"); 
    t_lineH1 = GetElementInsideContainer("tl_tit", "tl_h4"); 
    var c_type = clickon; 

    $.ajax({ 
     type: "POST", 
     url: "trefresh", 
     data: {}, 
     success: function (data) { 
      t_threads.innerHTML = ""; 
      $.each(data, function (index) { 
       var row = t_threads.insertRow(0); 
       var cell1 = row.insertCell(0); 
       var cell2 = row.insertCell(1); 
       var cell3 = row.insertCell(2); 
       var cell4 = row.insertCell(3); 
       var cell5 = row.insertCell(4); 
       cell1.innerHTML = data[index].OptionID; 
       cell2.innerHTML = data[index].OptionKey; 
       cell3.innerHTML = data[index].OptionVal; 
       cell4.innerHTML = data[index].OptionVal2; 
       cell5.innerHTML = data[index].OptionThread; 
     }); 

     var rows = t_threads.rows; // or table.getElementsByTagName("tr"); 
     for (var i = 0; i < rows.length; i++) { 
      rows[i].onclick = (function() { // closure 
       var cnt = i; // save the counter to use in the function 
       return function() { 
        task_det(this.cells[0].innerHTML); 
        t_line.style.visibility='visible'; 
        t_lineH1.innerHTML = "TIMELINE FOR PROC. ID: "+this.cells[0].innerHTML; 
        c_type = this.cells[4].innerHTML; 
        getTline(c_type) 
        //alert("row"+cnt+" data="+this.cells[0].innerHTML); 
       }  
     })(i); 
    } 
    } 
    }); 

    alert(c_type); 
    setTimeout(refTable.bind(c_type), 10000); 
} 

問題は、私は、警告置く場所を、変数結果は私がc_typeグローバルを作成し、保存することができますどのように

を「未定義」で、世界的なVAR c_typeは私のjQueryの機能に移入され、いつでもあるとそれは価値ですか?変数グローバルだけで

var c_type = clickon; 

およびその他のオプションは、ブラウザウィンドウになり、グローバルオブジェクト、それを定義することができ、関数の外で宣言作るため、事前

+2

'c_type 'がグローバルではない場合は、内部で' refTable() 'と定義しています。それを外に出しなさい。タイプミスとして閉じます。また、グローバルを使うことは良いデザインパターンではないことにも注意してください。 –

答えて

1

感謝。

window.c_type = clickon; 

とにかく良いことではありませんグローバル変数を定義することは、他の第三者ライブラリとの間で問題を引き起こす可能性があります。

注: は、あなたがそのような場合には、使用したい機能の内部で、同じ変数を定義していないことを確認してください関数内で定義された変数を取る機能...

+0

ファンクションやウィンドウの外にあるvarは私のためには機能しません。私はjQueryに別の関数を呼び出すと思います。 –

+0

同じ変数を定義していないことを確認してください。その場合は、関数で定義されている変数を使用します –

関連する問題