且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用JSOM创建新的列表项

更新时间:2023-12-05 14:48:40

请调用createAppoinments函数到另一个没有参数的函数中,然后使用ExecuteOrDelayUntilScriptLoaded调用没有参数的函数,这是供您参考的示例:

Please call place the createAppoinments function in another function which without parameter and then use ExecuteOrDelayUntilScriptLoaded to call the function which without parameter, here is the sample for your reference:

<script src="https://code.jquery.com/jquery-1.12.4.js" type="text/javascript"></script>
<script src="https://momentjs.com/downloads/moment.js" type="text/javascript"></script>
<script type="text/javascript">


(document).ready(function(){ ExecuteOrDelayUntilScriptLoaded(ready,'sp.js'); }); 函数ready() { createAppointments("2017"); } 函数getDaysArray(monthNumber,yearString){ //函数返回一个月中的某几天 var yearMonth ='" + yearString +-" + monthNumber +'"; //获得日历天数加1以增加 var numberOfDays = moment(yearMonth,"YYYY-MM").daysInMonth()+ 1; //检查月份数是否小于10 如果(monthNumber< 10){ //将month设置为在其前面有零的字符串 var vMonth ="0" + monthNumber.toString(); } 别的{ //将月份设置为不带前导零的字符串 var vMonth = monthNumber.toString(); } var daysArray = []; var iDay = 1; 而(iDay< numberOfDays) { //设置周末和假日标志的变量 var weekEnd = false; if(iDay< 10){ var workingDay = yearString +-" + vMonth +-" +"0"; + iDay.toString(); } 别的{ var workingDay = yearString +-" + vMonth +-" + iDay.toString(); } //检查周末并设置标志是否为 如果(moment(workingDay).day()== 0 || moment().day()== 6) { //将周末标志设置为true weekEnd = true; } //如果周末则跳过约会 如果(weekEnd == false){ //使用工作日日期设置days数组 daysArray.push(workingDay); }//weekEnd-holiday if语句结束 //增量 iDay ++; }//日结束循环-iDay return daysArray; } 函数createAppointments(currentYear) { var listName =访问者日历"; var context = new SP.ClientContext.get_current(); //当前上下文默认为此处 //您还可以如下创建特定的网站上下文 var lstObject = context.get_web().get_lists().getByTitle(listName); var newItem = null; var theYear = currentYear.toString(); var m = 1; //遍历所有12个月 而(小于13岁){ var dateWeekdays = getDaysArray(m,theYear); console.log(datesWeekdays); var numWeekDays = dateSeekdays.length; console.log(numWeekDays); //整天循环 for(var i = 0,len = numWeekDays; i< len; i ++) { var dateWDArray = []; dateWDArray = dateSeekdays [i] .split(-"); //初次约会的startDate var startDateTime1 = new Date(dateWDArray [0],dateWDArray [1] -1,dateWDArray [2],14,30); //第一次约会的结束日期 var endDateTime1 = new Date(dateWDArray [0],dateWDArray [1] -1,dateWDArray [2],15,30); //startDate进行第二次约会 var startDateTime2 = new Date(dateWDArray [0],dateWDArray [1] -1,dateWDArray [2],15,30); //第一次约会的结束日期 var endDateTime2 = new Date(dateWDArray [0],dateWDArray [1] -1,dateWDArray [2],16,30); //为第一个时隙创建可用约会 newItem = lstObject.addItem(new SP.ListItemCreationInformation()); newItem.set_item('Title','Available Appointment'); newItem.set_item('EventDate',startDateTime1); newItem.set_item('EndDate',endDateTime1); newItem.update(); //为第二个时隙创建可用约会 newItem = lstObject.addItem(new SP.ListItemCreationInformation()); newItem.set_item('Title','Available Appointment'); newItem.set_item('EventDate',startDateTime2); newItem.set_item('EndDate',endDateTime2); newItem.update(); } m ++; } context.executeQueryAsync(Function.createDelegate(this,this.onSuccess), Function.createDelegate(this,this.onFailure)); } 函数onSuccess() { alert(刷新以查看约会已创建."); console.log('创建的物品'); } 函数onFailure(sender,args){ console.log('请求失败.'+ args.get_message()+'\ n'+ args.get_stackTrace()); } </script>
( document ).ready(function() { ExecuteOrDelayUntilScriptLoaded(ready, 'sp.js'); }); function ready() { createAppointments("2017"); } function getDaysArray(monthNumber, yearString){ //function returns the days of the month var yearMonth = "'" + yearString + "-" + monthNumber + "'"; //get the number of calendar days plus one for increment var numberOfDays = moment(yearMonth, "YYYY-MM").daysInMonth()+1; //checks if the month number is under 10 if (monthNumber < 10){ //sets month to a string with a zero before it var vMonth = "0" + monthNumber.toString(); } else{ //sets month to a string without a leading zero var vMonth = monthNumber.toString(); } var daysArray = []; var iDay = 1; while (iDay < numberOfDays) { //set varibles for weekend and holiday flags var weekEnd = false; if(iDay < 10){ var workingDay = yearString + "-" + vMonth + "-" + "0" + iDay.toString(); } else{ var workingDay = yearString + "-" + vMonth + "-" + iDay.toString(); } //check for weekend and set flag if it is if (moment(workingDay).day() == 0 || moment().day() == 6) { //set weekend flag to true weekEnd = true; } //skip appointments if weekend if (weekEnd == false){ //set the days array with the working day date daysArray.push(workingDay); } //weekEnd-holiday if statement end //increment iDay++; }//end of days loop - iDay return daysArray; } function createAppointments(currentYear) { var listName = "Visitor Calendar"; var context = new SP.ClientContext.get_current(); // the current context is taken by default here //you can also create a particular site context as follows var lstObject = context.get_web().get_lists().getByTitle(listName); var newItem = null; var theYear = currentYear.toString(); var m = 1; //loops through all 12 months while(m < 13){ var datesWeekdays = getDaysArray(m, theYear); console.log(datesWeekdays); var numWeekDays = datesWeekdays.length; console.log(numWeekDays); //loops through all days for(var i = 0,len = numWeekDays; i < len; i++) { var dateWDArray = []; dateWDArray = datesWeekdays[i].split("-"); //startDate for first appointment var startDateTime1 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 14, 30); //end date for first appointment var endDateTime1 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 15, 30); //startDate for second appointment var startDateTime2 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 15, 30); //end date for first appointment var endDateTime2 = new Date(dateWDArray[0], dateWDArray[1]-1, dateWDArray[2], 16, 30); //Create available appointment for first time slot newItem = lstObject.addItem(new SP.ListItemCreationInformation()); newItem.set_item('Title', 'Available Appointment'); newItem.set_item('EventDate', startDateTime1); newItem.set_item('EndDate', endDateTime1); newItem.update(); //Create available appointment for second time slot newItem = lstObject.addItem(new SP.ListItemCreationInformation()); newItem.set_item('Title', 'Available Appointment'); newItem.set_item('EventDate', startDateTime2); newItem.set_item('EndDate', endDateTime2); newItem.update(); } m++; } context.executeQueryAsync(Function.createDelegate(this, this.onSuccess), Function.createDelegate(this, this.onFailure)); } function onSuccess() { alert("Refresh to see that the appointments have been created."); console.log('Items created'); } function onFailure(sender, args) { console.log('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); } </script>

日历中的结果:

谢谢

***的问候