핸들러 함수에 e.parameter.oneTextBox에 의해 반환되는 값은 "$ 120.00"문자열, 귀하의 예제에서 그것이 있어야하고 당신이 원하는 것은 ... 숫자 값입니다 내가 '제안이 같은 숫자로 그 모든 숫자가 아닌 문자를 제거하기 위해 replace()
를 사용하여 변환하는 것입니다 D :
var oneTextBoxNumValue = Number(e.parameter.oneTextBox.replace(/[^0-9]/g,''));// the regex ^0-9 takes everything not between 0 and 9 (and replace by '')
당신이 변환 후 수학 연산으로 원하는 모든 것을 할 수있는 다른 텍스트 상자에 동일한 프로세스를 사용하여.
가 $의 결과를 얻으려면, 단순히
getElementById('oneTextBox').setText(resultNumeric+"$")
유일한 까다로운 일이 소수점, 당신은 전환에서이 점을 고려해야합니다 당신의 결과에 '$'를 추가 $120.00,
를 숫자 값이 12000이 될 것이므로 결과를 어딘가에 나누는 것을 잊지 않으면 물건이 매우 비싸게됩니다! ;-) 또한 때로는 반올림 오류가 있었지만 항상 쉽게 처리 할 수 있습니다. 예를 들어 이와 비슷한 경우에 올바른 결과를 얻으려면 다음과 같이 사용해야합니다. (1.00 대신 2.00, quant = 아래의 예 2, 나는 그것을 시작하는 몇 가지 아이디어를 줄 것이다 희망)
var total = parseInt(Number(quant)*valtotal*100+0.01)/100;
2 진수로 값을 얻기 위해 100 정수를 나누고 있습니다. 편집
:
function calcTest() {
var app = UiApp.createApplication().setTitle('TextField Calculator');
var button = app.createButton('Calculate');
var handler = app.createServerHandler('calc');
button.addClickHandler(handler);
var grid = app.createGrid(5, 2);
grid.setText(0, 0, 'value1 ');
grid.setWidget(0, 1, app.createTextBox().setName('value1').setText('$ 45.00/unit'));
grid.setText(1, 0, 'value2');
grid.setWidget(1, 1, app.createTextBox().setName('value2').setText('3 units'));
grid.setText(2, 0, 'press button to calculate');
grid.setWidget(2, 1, button);
grid.setText(3, 0, 'value3 = value1*1.35');
grid.setWidget(3, 1, app.createTextBox().setId('value3').setEnabled(false));
grid.setText(4, 0,'sum value1 + value2 + value3');
grid.setWidget(4, 1, app.createTextBox().setId('sum').setEnabled(false));
handler.addCallbackElement(grid);
app.add(grid);
var ss = SpreadsheetApp.getActive();
ss.show(app);
}
function calc(e){
var app = UiApp.getActiveApplication();
var value1 = Number(e.parameter.value1.replace(/[^0-9]/g,''))/100;
var value2 = Number(e.parameter.value2.replace(/[^0-9]/g,''));
var calcvalue = parseInt(value1*1.35*100)/100
var sumcalc = calcvalue+value1+value2
app.getElementById('value3').setText('$ '+calcvalue)
app.getElementById('sum').setText(sumcalc+' without unit;)')
return app
}
편집 2 : 여기 다른 코드는, 내가 문자열 값을 변환하는 응용 프로그램에서 사용하는 기능 여기는 설명하기 위해 작은 코드 유로로, 그것은 그것의 접근법에서 약간 다르지만 꽤 잘 작동합니다.
function toEuro(val){
if(val==''){temp='';return temp}
var temp = val.toString().replace(/[^\d\.-]/g,'').split('.');
if(temp[0]==''){temp[0]='0'}
if(temp.length==1){var result = temp[0]+',00 €'}
else{
var int = temp[0]
var dec = temp[1]
if(dec.length==1){var result=int+','+dec+'0 €'}else{var result=int+','+dec+' €'}
}
return result
}
Hey Serge. 책을 쓸거야? 너는 먼 길을왔다! – ScampMichael
하하 ... 고마워 마이클, 가끔은 너무 열정적 인 게 사실이야! 하지만 솔직히 말해서 나는 내가하는 것만 큼 많이 받아 들인다. 대답은 매우 효율적인 학습 방법이다.) –
이것은 완벽하다. .. again ... thx again Serge. 내가 프로그래밍을 시작한 이후로 진지하게 가르쳤다. 나는 너에게 충분히 감사 할 수 없다. 추가 질문이 하나 있습니다. 2000.1251231과 같은 숫자를 얻으려면 텍스트 상자에 소수 자릿수 두 자리 만 만들려면 어떻게합니까? 오 ... 제 3 자릿수가 4 이하인 경우 소수점 이하 자릿수가 5 이상이고 반올림하지 않으면 반올림하고 싶습니다. – user1833055