2017-02-11 5 views
0

이슈 내부의 의견은 필요에 따라 목록을 편집하는 역할을 마지막 함수에서오고있다목록 항목을 만들고 채우고 편집합니다. 호기심 오류가 발생합니다. 코드와

JSBin Link

코드 :

// function to edit the desired list item with user input text 
function editAList(){ 
    var list = document.getElementsByTagName("li"); 
    var uList = document.getElementById("List"); 
    var listLength = list.length; // not needed at the moment 
    var listNum = parseInt(prompt("Enter the list number you would like to edit. Any number from 1 to "+listLength))-1; 
    var edit = document.createTextNode(prompt("Enter the new list text")); 
    uList.replaceChild(edit, uList.childNodes[listNum]); 
} 

문제 1 :

editAList

함수는 'listNum'에 대한 사용자 입력에서 숫자 0 [기술적으로는 1을 알지 못하는 사용자에 대해 뺄셈이 내장되어 있기 때문에 1]에 대해서만 작동합니다. 다른 값은 '오류를 반환합니다. Uncaught TypeError :'node '에서'replaceChild '를 실행하지 못했습니다. 매개 변수 2의 유형이'Node '입니다.' 일을 해결하기 위해

시도 :

이 (JS는 형식의이 종류를 필요로하지 않는 "느슨한 스크립트"언어 나의 이해에도 불구하고) 숫자로 변환하는 '에서는 parseInt'를 시도했습니다. 'document.createTextNode (prompt (...));'도 시도했습니다. 뿐만 아니라 동일한 오류 메시지가 나타납니다.

문제 2 :

그것은

시도를 목록 항목을 삭제하고 단지 '수정'텍스트로 대체

2 해결 :

createTextNode 인수 내 document.createElement("li")을 넣어 봤어을 - 인쇄 결과 OBJECT HTML LI createTextNode 메서드 앞뒤에 배치하려고했지만 'i'오류가 발생했습니다.

아이디어가 있습니까?

답변

1

사용하는 편집 기능과 같이

function editAList(){ 
    var list = document.getElementsByTagName("li"); 
    var uList = document.getElementById("List"); 
    var listLength = list.length; 
    var listNum = parseInt(prompt("Enter the list number you would like to edit. Any number from 1 to "+listLength))-1; 
    var edit = document.createTextNode(prompt("Enter the new list text")); 
    list[listNum].innerHTML=""; 
    list[listNum].appendChild(edit); 
} 
+0

감사합니다 일이 - 신용 대답했다. 후속 질문에 답하지 않더라도. 'list [listNum] .innerHTML = "";'은 무엇입니까? 여기있어? 나는 그것이 문제를 해결하는 것을 본다. 그러나 나는 이유를 알기에 충분한 JS를 이해하지 못한다. – vampiire

+0

지금 생각해보십시오. 텍스트를 공백으로 대체 한 다음 편집을 목록에 추가합니까? – vampiire

+0

@vampiire 맞습니다. 편집 된 텍스트가 이전 텍스트에 추가되지 않도록하는 것입니다. –

관련 문제