javascript
  • function
  • 2009-12-03 6 views 0 likes 
    0

    IM 다음 자바 스크립트 함수이 코드의 문제점은 무엇입니까?

    function showUser(cats1,cats2,nam_cat) 
    { 
         document.getElementById("eq").style.display=''; 
         document.getElementById('eq').innerHTML = '<TABLE cellpadding="3" class="b bc r w4"><TR class="ln g"> <TD class="l"><B>'+nam_cat+' Schemes</B></TD> <TD><A HREF="#" onclick="AlphaSort(\'scheme_1_month\',\'+cats1+\',\'+cats2+\',\'+nam_cat+\')">1 mth</a></TD> <TD>3 mth</TD> <TD>6 mth</TD> <TD>1 yr</TD> <TD>3 yr</TD> <TD>5 yr</TD> <TD>Inception</TD> <TD>NAV</TD></TR>'+sc_nms+'</Table>'; 
         document.getElementById("all").style.display='none'; 
        } 
    } 
    

    를 사용하지만 스피 AlphaSort 함수의 데이터를 경보 때 그대로, 즉 그 때 "+ cats1 +"이름을 표시한다. 내 값이 호출까지 올지 만 이러한 값을 호출 할 때 함수에 전달되지 않습니다.이 함수를 호출하는 코드의 오류는 무엇입니까?

    답변

    2

    글쎄, 당신이 제공 한 코드에 대한 나의 테스트가있다. 안타깝게도 AlphaSort 함수는 포함하지 않았지만,이 함수에서 오류가 발생하여 작업이 중단되었다고 가정하면이 작업이 진행될 수 있습니다!

    <div id="eq"></div> 
    <div id="all"></div> 
    
    
    
    <script type="text/javascript"> 
    function showUser(cats1,cats2,nam_cat) 
    { 
        var sc_nms = "You didn't define this variable"; 
         document.getElementById("eq").style.display=''; 
         document.getElementById('eq').innerHTML = '<TABLE cellpadding="3" class="b bc r w4"><TR class="ln g"> <TD class="l"><B>'+nam_cat+' Schemes</B></TD> <TD><A HREF="#" onclick="AlphaSort(\'scheme_1_month\',\''+cats1+'\',\''+cats2+'\',\''+nam_cat+'\')">1 mth</a></TD> <TD>3 mth</TD> <TD>6 mth</TD> <TD>1 yr</TD> <TD>3 yr</TD> <TD>5 yr</TD> <TD>Inception</TD> <TD>NAV</TD></TR>'+sc_nms+'</Table>'; 
         document.getElementById("all").style.display='none'; 
    } 
    
    showUser("meow", "purr", "Fluffy"); 
    </script> 
    
    1

    변수 "cats1"의 값을 문자열로 연결하려는 경우 문자열을 구분하기 위해 미리 작은 따옴표를 이스케이프 처리 했으므로 문자열로 실제로 삽입하는 것이 문제입니다.

    작은 따옴표 앞에 \를 붙이면 문자열 자체가 아닌 변수 값을 문자열에 추가합니다.

    +2

    나는 한 단계 더 나아가 현재 \ '는 잘하지만 추가'고 말할 것이 필요하다 - 그렇지 않으면 cats1에서 문자열이 출력에서 ​​변수 이름으로 간주됩니다 ... 즉 \ ''+ cats1 + '\' – Fenton

    +1

    구문 강조 표시가있는 편집기를 사용하면 이러한 종류의 오류가 빠르게 나타납니다. –

    +0

    맞아, 나는 내 대답에 성급했다. –

    관련 문제