0118開発ログ


今日やったこと


課題


1.出張情報を修正し、金額入力欄と合計に1000ビットカンマを追加



数値以外の入力、出力の部分に千桁のカンマを追加しました.ローカル通貨基準としてカンマ文字列を返す数値を受け入れる関数toLocaleString()があるため、累積演算を行う際に文字列を数値に変換する必要があります.最初はそれを知らなかったのでinputにカンマを付けた瞬間にNaNを加算した理由がわかりませんでした
javascriptでは、文字列に*1を付けると数字に変換できます.
$(document).ready(function () {  
  // 금액 합계 기능
  function setTotalPrice() {
    var total = 0;
    $(".PRICE").each(function() {
      total += $(this).val().replace(/\D/g,'') * 1;
    });
    // 합계 출력
    $("#priceTotal").html(total.toLocaleString());
  }
  setTotalPrice();

  // 금액 입력 시 숫자 아닌 것 지우고 합계 업데이트
  $('.PRICE').keyup(function(e){
    if (/\D/g.test(this.value)){
      this.value = this.value.replace(/\D/g, '');
    }
    this.value = (this.value * 1).toLocaleString();
    setTotalPrice();
  });       
});

2.金額が追加されているが支払方法が選択されていない検証


for (var i=0; i<4; i++) {
  var input_price = document.getElementById("btExpVOList" + i + ".PRICE");
  var select_payment = document.getElementById("btExpVOList" + i + ".PAYMENT_METHOD");
  
  // 금액 비교를 위한 text -> int 형변환
  input_price.value = input_price.value.replace(/\D/g,'') * 1;

  // 금액 있는데 결제방법 선택 안한 경우 -> 리턴
  if(input_price.value>0 && select_payment.value==999) {
    // 다시 콤마 텍스트로 변환
    input_price.value = (input_price.value * 1).toLocaleString();
    alert("출장 비용 입력 시 결제방법을 반드시 선택해야 합니다.");
    return;
  }
  // 금액 없는데 결제방법 선택된 경우 -> 결제방법 초기화
  if(input_price.value==0 && select_payment.value!=999) {
    select_payment.value=999;
  }
  // 콤마 포함한 text -> 콤마 제거 후 int 형변환
  input_price.value = input_price.value.replace(/\D/g,'') * 1;
}

じょうほうしょりエンジニア


要求1、sql 1、2

その他


プログラマーsqlハイスコアスイートをすべて解読しました.問題の多くは簡単なレベルですが、たまに難しいこともあります.

簡単なSQL関数、ヒント

  • ISNULL(컬럼명, '대체값'):カラムの値がNULLの場合は、出力として「代替値」を入力します.
  • 通常は「比較文字列」を使用しますが、「比較文字列」LIKE CONCAT(「%」、「%」、「%」)でも構いません.이름「名前1、名前2、名前3、名前4、名前5」のいずれかの値を検索します.
  • ORDER BYの演算は使用可能です.order by datediff(date1, date2) -> order by date1 - date2
  • DATETIMEはDATE:date_format()のみをインポートします.私は1つの関数left(10)を思いつきました.上位10位のyyyy-mm-ddだけをインポートすることもできます.
  • WITH RECURSIVE


    WITHを使用した仮想テーブルの作成

    WITH 가상테이블명 AS (
    	SELECT 초기값 AS 컬럼명
        UNION ALL
        SELECT 쿼리
    )
    SELECT * FROM 가상테이블명;
    WITHを使用して仮想テーブルを作成できます.

    WITH RECURSIVEを使用した自己参照の仮想テーブルの作成

    WITH RECURSIVE 가상테이블명 AS (
    	SELECT 초기값 AS 컬럼명1
        UNION ALL
        SELECT 컬럼명1 계산식 FROM 가상테이블명 WHERE 조건
    )
    -- 재귀로 임시 테이블 생성해서 사용하기
    WITH RECURSIVE PRACTICE AS 
    (
    	SELECT 1 AS IDX
        UNION ALL
        SELECT IDX+1 FROM PRACTICE WHERE IDX<13
    )
    SELECT CONCAT(IDX, '의 아해') AS NAME FROM PRACTICE;