>source

연습을 하고 있습니다. 테이블 행을 클릭할 때 모달 팝업 창을 만들고 클릭한 상태에 대한 관련 정보를 불러오려고 합니다.

JSON은 다음을 반환합니다.

"data": [
    {
        "ID State": "04000US01",
        "State": "Alabama",
        "ID Year": 2019,
        "Year": "2019",
        "Population": 4903185,
        "Slug State": "alabama"
    }
]

그리고 호출에서 이를 사용하는 다른 API에 사용할 Slug State 라인을 가져오려고 합니다.

function BuildStatesByPopulation(data) {
    if (stateTable != null) {
        for (var i= 0; i < data.length; i++) {
            let addRow= `<tr id="stateData" class='clickable-row' onClick=SelectStateOpenModal(${data[i]["Slug State"]})>                          <td>${data[i].State}</td>                          <td>${data[i].Population}</td>                          </tr>`
            stateTable.innerHTML += addRow;
            //console.log(data[i]["Slug State"]);
        }
    }
}

function SelectStateOpenModal(stateName) {
    let setState= String(stateName);
    let stateDisplay;
    let stateJson
    console.log(stateName);
    $.ajax({
        type: 'GET',
        url: stateInformation+setState,
        success: function (response) {
            stateJson= response.data;
            stateDisplay= document.getElementById('modalView');
            console.log(stateJson);
        }
    });
}

콘솔에서 테이블의 행을 클릭하면 다음이 반환됩니다.

index2.html:71 잡히지 않은 ReferenceError: nebraska는 HTMLTableRowElement.onclick에 정의되어 있지 않습니다(index2.html:71:87).

onclick 속성이 무서운 이유 중 하나입니다. 대신 addEventListener를 사용하십시오.

Quentin2022-02-01 10:33:12

문자열을 전달하기 위해 onClick=SelectStateOpenModal('${data[i]["Slug State"]}') 에서 작은 따옴표를 놓친 것 같습니다... 그것 없이는 변수로 간주됩니다. [email protected]는 정의되지 않습니다. ;)

Louys Patrice Bessette2022-02-01 10:33:12

@LouysPatriceBessette 이름에 아포스트로피가 포함된 상태에서는 중단됩니다. 그런 code를 작성하지 마십시오.

Bergi2022-02-01 10:33:12

테이블 행에 일반 'id'를 지정하지 마십시오. 요소 ID는 전체 DOM(페이지)에 대해 고유해야 합니다. 'stateData' ID를 '...'와 같은 클래스로 만듭니다.

Troy Niemeier2022-02-01 10:33:12
  • 이전 c# : 변수에 다른 변수가 포함된 경우 GetEnvironmentVariable?
  • 다음 "utf-8" 인코딩으로 "filedialog.askopenfile"을 사용하여 파일을 여는 방법 파일을 열 수는 있지만 다른 인코딩으로 열리고 있습니다