2015-09-06 63 views
0

我正在寫一個文本編輯器(括號)的擴展,它可以生成HTML並在HTML中自動添加庫。我可以將多個JavaScript Object方法保存爲一個變量嗎?

我有一個對象叫'選擇'。

此模式要求用戶輸入:

var choice = new Object(); 

    choice.language = function() { 
     //Buid HTML top 'head' 
     var htmlTop = "<!DOCTYPE html>" + "<html>" + "<head lang='"; 
     //Grab Selected Language Type 
     var languageChoice = document.getElementById("languages").value; 
     //Determine what Selected Language type is and complete HTML 'head' 
     if (languageChoice === "english") { 
      languageChoice = "en"; 
      return htmlTop + languageChoice + "'>"; 
     } else if (languageChoice === "german") { 
      languageChoice = "de"; 
      return htmlTop + languageChoice + "'>"; 
     } else if (languageChoice === "spanish") { 
      languageChoice = "es"; 
      return htmlTop + languageChoice + "'>"; 
     } else if (languageChoice === "french") { 
      languageChoice = "fr"; 
      return htmlTop + languageChoice + "'>"; 
     } else if (languageChoice === "italian") { 
      languageChoice = "it"; 
      return htmlTop + languageChoice + "'>"; 
     } else if (languageChoice === "chinese") { 
      languageChoice = "zh-cn"; 
      return htmlTop + languageChoice + "'>"; 
     } 
     }; //end choice.language 

    choice.charset = function() { 
     //Build meta and the rest of the 'head tag' 
     var htmlCharset_Beginning = "<meta charset='"; 
     var htmlCharset_End = "'>" + "<title> -Insert Title- </title>" + "<!-- Insert CSS links below -->" + "</head>" + "<body>"; 
     var charsetChoice = document.getElementById("charset").value; 
     if (charsetChoice === "utf8") { 
      charsetChoice = "UTF-8"; 
      return htmlCharset_Beginning + charsetChoice + htmlCharset_End; 
     } else { 
      charsetChoice = "UTF-16"; 
      return htmlCharset_Beginning + charsetChoice + htmlCharset_End; 
     } 
     }; // end choice.charset 

    choice.doctype = function() { 
     var doctypeChoice = document.getElementById("doctype").value; 
     return doctypeChoice; 
    }; // end doctype 

    choice.libraries = function() { 
     var checkedBoxes = getCheckedBoxes("lib_checkboxes"); 
     checkedBoxes.forEach(function(item){ 
     var scripts =+ $(item).data('script'); 

    });//End forEach 
     var bottomHTML = scripts + "</body>" + "</html>"; 
     return bottomHTML; 
    }; //End choice.libraries 


    var chosenTemplate = function(){ 
    var template = choice.language() + choice.charset() + choice.libraries(); 

     // insert html into file, this will overwrite whatever content happens to be there already 
     EditorManager.getCurrentFullEditor()._codeMirror.setValue(template); 

     // automatically close the modal window 
     $('#templates_modalBtn').click(); 
    }; 

    //Get checkedBoxes function 
    // Pass the checkbox name to the function 
    function getCheckedBoxes(chkboxName) { 
     var checkboxes = document.getElementsByName(chkboxName); 
     var checkboxesChecked = []; 
     // loop over them all 
     for (var i = 0; i < checkboxes.length; i++) { 
     // And stick the checked ones onto an array... 
     if (checkboxes[i].checked) { 
      checkboxesChecked.push(checkboxes[i]); 
     } 
     } 
     // Return the array if it is non-empty, or null 
     return checkboxesChecked.length > 0 ? checkboxesChecked : null; 
    } 


    } // End action(); 

    //JEFF STOP CODING HERE 

    // Register the commands and insert in the File menu 
    CommandManager.register(Strings.MENU_COMMAND, 'templates', action); 
    var menu = Menus.getMenu(Menus.AppMenuBar.EDIT_MENU); 
    menu.addMenuDivider(); 
    menu.addMenuItem('templates'); 

}); //end define; 

問題: Imgur

選擇通過定義方法的選擇在這裏

部分JS抓住了用戶的輸入:

我可以保存多個方法(每個方法返回一個字符串)作爲一個變量嗎?

這裏舉例:

var chosenTemplate = function(){ 
    var template = choice.language() + choice.charset() + choice.libraries(); 

     // insert html into file, this will overwrite whatever content happens to be there already 
     EditorManager.getCurrentFullEditor()._codeMirror.setValue(template); 

     // automatically close the modal window 
     $('#templates_modalBtn').click(); 
    }; 

我的代碼加載,沒有錯誤,但它不是執行所有所以我試圖調試,並找出什麼錯誤......

+0

'choice.libraries()'實際上並沒有返回任何東西,順便說一下。 – Purag

+0

我該如何讓它返回一些東西?在我的代碼中,我把它作爲'return bottomHTML' – jward01

+0

我修正了它我認爲,現在你可以再看看它@Purag – jward01

回答

2

在您實現'selectedTemplate'功能之前,您應該檢查頁面的文檔流是否已經下載。如果不是,您可能無法獲取小部件的值(空)。

+0

如何做到這一點?理論上?感謝您的輸入! – jward01

+0

將我的代碼包裝在$(document).ready(function(){});做同樣的事? – jward01

+0

是的,將代碼包裝到$(document).ready(function(){})中可能會有所幫助 –

相關問題