我在IIFE上得到了一份任务。
我阅读文档,在这里尝试过,但仍然无法找到我的问题的答案。
我有2个文件。很多函数都会写入一个名为items.js的文件中,并且我应该可以在另一个文件中访问这些函数,比如说main.js。
我试过实现它,但实际上无法做到。任何输入将不胜感激。
谢谢。 其实我所需要的是,我有一个名为TimeForNewToDoItem(项目)在一个IIFE内的items.js中的函数,
我应该能够在另一个.js文件中访问它。
我不需要存储该函数的任何返回值。
TimeForNewToDoItem(项目)函数只是做了一些DOM操作如何访问iife外的功能
// main.js
(function(){
\t var toDoElements = {};
\t var ulContainer = document.querySelector("#itemContainerId");
\t var div = document.createElement("div");
\t var listArray = [];
\t
\t document.addEventListener("DOMContentLoaded", function(event) {
\t \t console.log("DOM loaded");
\t \t //adding existing elements
\t \t var preloadedItems = ["Eat","sleep"];
\t \t preloadedItems.map(function(item)
\t \t \t {
\t \t \t \t listArray = TimeForNewToDoItem(item);
\t \t \t \t div.appendChild(listArray);
\t \t \t }); \t
\t \t /*var newInputItem = document.getElementById("newToDoItem");
\t \t var ulElement = document.getElementById("itemContainerId");
\t \t var clrscr = document.getElementById("clearScreen");
\t \t ulElement.addEventListener("click",AssignListeners);
\t \t clrscr.addEventListener("click",clearScreen);
\t \t newInputItem.addEventListener("keydown",check);*/
\t });
\t //checks for enter key
\t function check(event){
\t \t console.log("Keydown event listened");
\t \t if(event.keyCode === 13){
\t \t \t console.log("Enter key pressed, going to add new items");
\t \t \t var newItem = document.getElementById("newToDoItem").value;
\t \t \t TimeForNewToDoItem(newItem);
\t \t }
\t }
\t
})();
//items.js
(function(){
\t \t //to add new todo item
\t function TimeForNewToDoItem(newItem){
\t \t var newInputItem = document.getElementById("newToDoItem");
\t \t newInputItem.value = null;
\t \t var childCount = ulContainer.childNodes.length;
\t \t console.log("totally "+childCount+" child nodes are currently present inside parent ul element");
\t \t var checkBoxid = "checkBox"+childCount;
\t \t var stat = "unchecked";
\t \t var divContent = template(newItem,childCount);
\t \t console.log("new TODO item added");
\t \t var insertedItems = {id : checkBoxid, name : newItem, state : stat};
\t \t storeElements(insertedItems);
\t \t return divContent;
\t }
\t
\t \t //returns the array of elements to be added to the DOM
\t function template(newItem,childCount){
\t \t var checkBoxid = "checkBox"+childCount;
\t \t var newItemToBeAdded = [];
\t \t var count = 0;
\t \t newItemToBeAdded[count++] = "<li class = 'customHorizontalRule'>";
\t \t newItemToBeAdded[count++] = "<input type = 'checkbox' id = '"+checkBoxid+"' class = 'checkBox'/>";
\t \t newItemToBeAdded[count++] = "<span>"+newItem+"</span>";
\t \t newItemToBeAdded[count++] = "<a href = '#' class = 'moveRightSide' id = 'deletebutton"+childCount+"' >Delete</a>";
\t \t newItemToBeAdded = newItemToBeAdded.join("");
\t \t return newItemToBeAdded;
})();
你需要公开他们一些如何...也许使用全局对象(窗口浏览器,全球innodejs) –
你必须将其更改为窗口范围 –
例如,而不是'功能TimeForNewToDoItem(的newitem ){'...做一些像'window.TimeForNewToDoItem = function(newItem){'... –