2016-11-22 63 views
0
<div id="a"></div><br> 
<div id="b"></div> 
<script> 
    function Con(id){ 
     this.id = id; 
     var me = this; 

     x = function(){ // public function 
      console.log(this.id) 
     }.bind(this); 

     this.y= function(){ // public function 
      console.log(me) 
      html = "<a href='javascript:void(0)' id='mycls-"+this.id+"' onclick='x()'>hello-"+this.id+"</a>"; 
      document.getElementById(this.id).innerHTML = html; 
     } 
     this.y(); 
    } 
    var v = new Con("a"); 
    var v1 = new Con("b"); 
</script> 

我有javascript構造函數我想從y公共函數內部的鏈接調用x公共函數。我想得到正確的ID EX:如果我點擊一個div,它應該控制一個,或者如果我點擊b div,它應該控制檯b,但它總是隻控制b。我們如何在javascript中使用事件處理程序調用公共函數內的公共函數

+0

我不知道我理解你的問題,但你一定要明白由於變量範圍,「x」函數現在不公開嗎?如果你希望它是公開的,它應該是「this.x」。 –

+0

它只打印「b」,因爲第3行:var me = this; * this *指向新創建的對象,因此通過將其存儲在一個變量中,您將始終獲得最新的實例(在本例中爲「b」) –

+0

如果我調用像this.x()這樣的函數,它會給出如下錯誤:Uncaught TypeError:this.x不是函數(...) –

回答

0

請通過ID在x功能類似的說法: onclick='x("+this.id+")'

x = function(arg){ // public function 
    console.log(arg.id) 
}.bind(this); 

請查收總碼:

<div id="a"></div><br> 
<div id="b"></div> 
<script> 
    function Con(id){ 
     this.id = id; 
     var me = this; 
     x = function(arg){ // public function 
      console.log(arg.id) 
     }.bind(this); 

     this.y= function(){ // public function 
      html = "<a href='javascript:void(0)' id='mycls-"+this.id+"' onclick='x("+this.id+")'>hello-"+this.id+"</a>"; 
      document.getElementById(this.id).innerHTML = html; 
     } 
     this.y(); 
    } 
    var v = new Con("a"); 
    var v1 = new Con("b"); 
</script> 
相關問題