요소가 생성 될 때 ID를 명확하게 설정하면 "this.nextSiblingElement.id가 null"이라는 오류가 발생합니다. 나는 여전히 인정할만한 작품을 사용할 수있다. null로 반환되는 nextSiblingElement의 ID가 원인인지 궁금했습니다. 이전 요소가 드롭 다운 메뉴 이전에 생성되었고 메뉴가 앞에 놓여 있는지 확인했습니다. previousChild.appendChild.nextSibling이 null을 반환 함
필요에 따라 코드를 편집 할 수 있지만 이해하기 위해 표시 할 코드를 잘 모르겠습니다. 다음과 같이 나는 단지 관련 기능을 보여주는 오전 :
//helper function to add elements to the form
function createNewFormElement(inputForm, feildName, elementName, elementValue, elementType){
var inputString = String(feildName + ": <input name='" + elementName + "' type='" + elementType + "' /> ");
var newElement = document.createElement('div');
newElement.style.display = 'inline';
if (feildName == "Quantity" && containerType != "Box/Bag"){
newElement.style.visibility = 'hidden';
}else{
newElement.style.visibility = 'visible';
}
if (feildName == "Quantity"){
newElement.id = "boxhide"+counter;
}else{
newElement.id = 'dynamicInput';
}
newElement.innerHTML = inputString;
newElement.value = elementValue;
document.getElementById(inputForm.id).parentNode.appendChild(newElement);
return newElement;
}
//helper function to add dropdown
function createNewDropDown(inputForm, feildName, elementName){
var dropDown, arValue;
var newElement = document.createElement('div');
newElement.id = 'dynamicInput';
newElement.style.display = 'inline';
dropDown = "<option value='" + containerType + "' selected>" + containerType + "</option>";
for (i=0; i<conArray.length; i++){
arValue = conArray[i];
dropDown = dropDown + "<option value='" + arValue + "'>" + arValue + "</option>";
}
var inputString = String(feildName + ": <select onchange='switchMain(this.nextElementSibling.id);' name='" + elementName + "' id='" + elementName + "'>" + dropDown + "</select> ");
newElement.innerHTML = inputString;
document.getElementById(inputForm.id).parentNode.lastChild.previousSibling.appendChild(newElement);
return newElement;
}
function getStyle(divName){
var temp = document.getElementById(divName).style.visibility;
return temp;
}
function switchMain(divName){
var e = document.getElementById("myContainers[]");
var strUser = e.options[e.selectedIndex].value;
if (strUser == "Box/Bag"){
var current = getStyle(divName);
//console.debug(current);
document.getElementById(divName).style.visibility = "visible";
}else{
document.getElementById(divName).style.visibility = "hidden";
}
}
해당 기능을 호출하는 방법을 확인하려면 관련 HTML도 게시하시기 바랍니다. –
이 질문에 jQuery는 어디에 있습니까? – j08691
nextSibling은 요소 노드이거나 텍스트 노드 일 수 있습니다 (공백 텍스트 노드 일 수 있음). – kennebec