2012-12-15 6 views
1

두 개의 다른 드롭 다운 목록을 기반으로 if/and 문을 작성하려고합니다. 아래 논리를 사용하여 무언가를 쓸 수 있습니까? "if & &"문은 제대로 작동하지 않지만 단일 "if"문으로 올바르게 작동합니다. 내가 알고있는 것은 약간의 코드이지만, 이것이 정확히 무엇이 일어나고 있는지를 보여줄 수있는 유일한 방법입니다. 대신Google 애플리케이션 스크립트에 if/and 문을 작성하는 방법

function doGet(e) { 
    var app = UiApp.createApplication(); 

    var containerSizeList = app.createListBox().setId('containerSizeList').setName('containerSizeList'); 
    containerSizeList.addItem("20ft Long"); 
    containerSizeList.addItem("40ft Long"); 

    var loadingStyleList = app.createListBox().setId('loadingStyleList').setName('loadingStyleList'); 
    loadingStyleList.addItem("On Pallets"); 
    loadingStyleList.addItem("Floor Loaded"); 

    var tenPalletPanel = app.createHorizontalPanel().setId('tenPalletPanel').setVisible(true); 
    var tenPalletLabel = app.createLabel('10 Pallets Available').setId('tenPalletLabel'); 
    var twentyPalletPanel = app.createHorizontalPanel().setId('twentyPalletPanel').setVisible(false); 
    var twentyPalletLabel = app.createLabel('20 Pallets Available').setId('twentyPalletLabel'); 
    var loadingNotePanel = app.createHorizontalPanel().setId('loadingNotePanel').setVisible(false); 
    var loadingNoteLabel = app.createLabel('Note: Only certain products may be floor loaded') 
    .setId('loadingNoteLabel'); 

    var containerGrid = app.createGrid(1, 2); 
    containerGrid.setWidget(0, 0, containerSizeList); 
    containerGrid.setWidget(0, 1, loadingStyleList); 

    var handlerJ = app.createServerClickHandler('palletChangeMe'); 
    containerSizeList.addChangeHandler(handlerJ); 
    loadingStyleList.addChangeHandler(handlerJ); 
    handlerJ.addCallbackElement(containerGrid);  

    app.add(containerGrid); 
    app.add(tenPalletPanel); 
    tenPalletPanel.add(tenPalletLabel); 
    app.add(twentyPalletPanel); 
    twentyPalletPanel.add(twentyPalletLabel); 
    app.add(loadingNotePanel); 
    loadingNotePanel.add(loadingNoteLabel); 

    return app; 
} 

function palletChangeMe(e){ 
    var app = UiApp.getActiveApplication(); 

    if (e.parameter.containerSizeList == "40ft Long" && e.parameter.loadingStyleList == "On Pallets"){ 
    app.getElementById('tenPalletPanel').setVisible(false); 
    app.getElementById('twentyPalletPanel').setVisible(true); 
    app.getElementById('loadingNotePanel').setVisible(false); 
} 

    return app; 
} 
+1

가 어디 callbackElement 핸들러입니다? –

+0

이것이 문제였습니다. 코드가 업데이트되어 지금 작동합니다. Thx 다시 Serge. – user1833055

답변

4

:

if (e.parameter.containerSizeList == "20ft Long"){ 
    and if (e.parameter.loadingStyleList == "On Pallets"){ 

은 다음과 같아야합니다

if (e.parameter.containerSizeList == "20ft Long" && e.parameter.loadingStyleList == "On Pallets"){ 

참고 : && 논리적 의미합니다. MDN의 논리 연산자에 대한 Read more

은 당신이 문 경우 각 }을 마지막으로 제거해야하므로 최종 코드는 같을 것이다 :

if (e.parameter.containerSizeList == "20ft Long" && e.parameter.loadingStyleList == "On Pallets"){ 
    app.getElementById('tenPalletPanel').setVisible(true); 
    app.getElementById('twentyPalletPanel').setVisible(false); 
} 

if (e.parameter.containerSizeList == "40ft Long" && e.parameter.loadingStyleList == "On Pallets"){ 
    app.getElementById('tenPalletPanel').setVisible(false); 
    app.getElementById('twentyPalletPanel').setVisible(true); 
} 
+0

안녕하세요. 어떤 이유로 Google Apps 스크립트에서 작동하지 않습니다. Google 앱 스크립트에서이 작업을 수행하는 방법이 약간 다를 수 있습니까? 나는 이것이 자바 스크립트에서 어떻게 이루어 졌는지를 알아 차 렸지만 GAS가 if/and statment를하는 약간 다른 방법이 있는지 궁금해한다. 나는 내 자리가 정확한지 확인했다. – user1833055

+0

@ user1833055 GAS는 Google 서비스 용 JS로 작성된 API이므로/및 명령문을 작성할 수있는 다른 방법이 없으므로 '컨테이너 크기 목록'과 'loadingStyleList'에 정확한 값이 있는지 확인해야합니다. 예를 들어 대소 문자, 공백 문자 등등.'console.log (containerSizeList); console.log (loadingStyleList);를 추가하고 브라우저 콘솔에서 어떤 일이 일어나는 지 + 스크립트에 다른 오류가 없는지 확인하십시오. – antyrat

+0

저는 아닙니다 왜 작동하지 않는지 확인하십시오. 나는 모든 문자가 정확한지 확인했다. 그러나 "e.parameter.containerSizeList =="40ft Long ""또는 "e.parameter.loadingStyleList =="팔레트에서 ""사용할 때는 if 문만 작동합니다. 하지만 "e.parameter.containerSizeList =="40ft Long "&& e.parameter.loadingStyleList =="팔레트에서 ""를 사용하면 "if &&"문이 더 이상 작동하지 않습니다. 다른 제안이 있으십니까? – user1833055

관련 문제