returnDayNumber라는 전역 메소드에 문제가 있습니다. 내 자바 스크립트 내에서 함수를 호출하면 잘 작동합니다. 하지만 버튼을 만들어 함수를 호출 할 때 : "self.returnDayNumber는 함수가 아닙니다."(var self = this가 문제를 해결할 수 있다고 생각했습니다). 자바 스크립트 간단한 함수 호출 (범위에없는 함수)
/*
* Global data
* used to centralize user data to be used in graphs
*/
var userModel = new userHealthModel();
userModel.createUsers();
userModel.addUser();
var newChart = new NewHighCharts();
returnDayNumber = function(month, day)
{
if(month==1)
{
return day;
}
else if(month==2)
{
return(31+day);
}
else if(month==3)
{
return(60+day);
}
else if(month==4)
{
return (91+day);
}
else if(month==5)
{
return(121+day);
}
else if(month==6)
{
return(152+day);
}
else if(month==7)
{
return(182+day);
}
else if(month==8)
{
return(213+day);
}
else if(month==9)
{
return(244+day);
}
else if(month==10)
{
return(274+day);
}
else if(month==11)
{
return(305+day);
}
else if(month==12)
{
return(335+day);
}
}
saveThis = function()
{
var self = this;
alert("your about to save!")
newChart.destroyChart();
newChart= new NewHighCharts();
var numberOfUsers = userModel.users().length;
var users = userModel.users();
var weights = userModel.getWeights();
var dates = userModel.getDates();
var dataArray = [];
var xAndY = []
var singleDate;
var name;
for(var i=0;i<numberOfUsers;i++)
{
name = users[i].name;
xAndY = [];
for(var x=0;x<dates.length-1;x++)
{
//extract month
var month = ([dates[i][x]].toString()).substring(0,2);
//extract day
day = parseInt(([dates[i][x]].toString()).substring(3,5));
//add the day number and weight of users to an array of x and y coordinates
xAndY.push([self.returnDayNumber(month,day),weights[i][x]])
}
newChart.addNewSeries(name,xAndY);
}
///!!!!This works!!!///
this.saveThis()//!!!
}
ko.applyBindings(userModel);
내가 KO로 사용자 모델을 만들었지 만 나는 그것의 관련을 생각 해달라고 : 여기 내 코드입니다. 그리고 여기 내 HTML을, 그 KO 구문을 참고하지만 작동합니다.
<button data-bind="click: saveThis">Save</button>
메신저 아마도 간단한 실수를하거나 무언가가 범위를 벗어납니다. 인스턴트 메신저 자바 스크립트 초급 그래서 간단한 질문에 대한 미안 해요. 유용한 프로그래머에게 많은 감사를드립니다!
또한 위의 논리는 윤년으로 잘 작동합니까? – Ramesh
returnDayNumber 함수를 단축하는 방법은 다음과 같습니다. monthArray = new Array (00316091121152182213244274305,335); returnDayNumber = function (월, 일) { if (월 == 1) 반환 일; else if (월> 1 && 월 <= 12) 반환 일 + monthArray [month]; else return 0; } 서식이 부족할 수 있습니다. 주석은 코드 형식을 허용하지 않습니다. – Rhyono
@Rhyono 'this'와 같이 코드 서식에 눈금을 사용할 수 있습니다. – mc10