기본적으로 내 웹 응용 프로그램 중 하나의 일부를 다시 작성하고 있습니다. 한 번에 인터페이스의 일부 또는 모든 패널을 접을 수있는 스크립트와이를 코드화하는 스크립트가있었습니다. 매우 귀찮은 JavaScript 배열/객체 오류
그러나, 내 옛 기능은 정말 추한 모습, 그리고 입력하는 성가신 충분하지 강력했다 :function panel() //first variable in argument is collapse or expand, all others are panels to act on
{
var panels = panel.arguments
alert(typeof panel.arguments)
var mode = panels.shift() //here's my problem
if(mode=="collapse") {mode="none"}
if(mode=="expand") {mode=""}
var items = panels.length
for (i = 0;i < items;i++) {document.getElementById(panels[i]).style.display=mode}
}
panel("collapse","panel_1","panel_2","panel_3")
그래도 문제가 :
function collapse_all()
{
document.getElementById("panel_1").style.display="none"
document.getElementById("panel_2").style.display="none"
document.getElementById("panel_3").style.display="none"
}
function expand_all()
{
document.getElementById("panel_1").style.display=""
document.getElementById("panel_2").style.display=""
document.getElementById("panel_3").style.display=""
}
지금 나는이 있습니다. Firebug는 panels.shift()가 함수가 아니라고 말합니다. 일부 인터넷 검색을 통해 나는 panel.arguments가 배열이 아니라 객체라는 것을 알아 냈습니다. 따라서 배열 메소드를 사용할 수 없습니다. 나는 JavaScript 객체에 관해서는 알지 못했지만 객체를 배열로 변환하거나 다른 해결 방법을 찾는 방법에 대해 혼란스러워합니다. 일부 예제 코드는 매우 높이 평가 될 것입니다.
진술이 끝나면 실제로는;를 사용해야합니다.JavaScripts 자동 삽입에 의존하는 것은 당신이 원하는 것이 아닙니다. 날 믿어. – jwueller
제안 해 주셔서 감사합니다. 그러나 저는 전문적인 웹 개발자가 아니며 여러 줄의 코드를 한 줄로 짜 넣었을 때 (그리고 세미콜론을 사용합니다) 다음 줄이 시작될 때만 문제가 있다는 것을 읽었습니다 –
글쎄, 당신은 "전문적인 웹 개발자가 아니기 때문에"나는 당신이 필요하다고 생각하든 그렇지 않든간에, 애매한 조언을 듣고 세미 콜론을 사용할 것을 강력히 권고한다. 가독성을 높이고 컴파일러가 모호한 점을 제거하십시오. –