2014-02-24 33 views
0

我有以下的JavaScript對象:的JavaScript的onclick功能

function Project(name) 
{ 
    this.panel = $('#worksheet_panel'); 
    this.name = name; 
    this.workBox = 
     '<div class="worksheet_box">'+ 
     ' <div class="list-group">'+ 
     '  <button class="btn btn-block btn-primary btn_work_add" onclick="setProject('+this.name+');" data-toggle="modal" data-target=".workModal">Add</button>'+ 
     ' </div>'+ 
     '</div>'+ 
     '</div>'; 
    function changeName(name) 
    { 
     this.name = name; 
    } 

    this.addElement = function() 
    { 
     this.element = 
      '<div id="1" class="col-md-3 table-bordered worksheet_overall_box" draggable="true" ondragstart="drag(event)">'+ 
       '<div class="table-bordered title_box">'+ 
       '<h4 class="title text-center worksheet_title">'+name+'</h4>'+ 
       '</div>'+ 
     this.workBox; 
     this.panel.append(this.element); 
    } 
} 

現在你可以看到this.workbox有一個onclick函數來調用這個函數:

function setProject(name) { 
    selected_project = projects[name]; 
} 

現在,當過我點擊按鈕我得到以下錯誤:

ReferenceError: asasa is not defined 

setProject(asasa); 
+0

我沒有看到你實際上命名工作箱......這可能是問題嗎?雖然我在代碼中沒有看到「asasa」的提及,但這很奇怪...... – Atutouato

回答

1

看看生成代碼。這將是這樣的:

onclick="setProject(asasa);" 

,這意味着你正試圖將變量asasa傳遞給函數。這樣的變量不存在。

它看起來像你想傳遞包含該值的字符串,所以你必須加上引號:

' ... onclick="setProject(\''+this.name+'\');" ...' 

,這樣生成的代碼

onclick="setProject('asasa');"