<script>
var p = "alert('456')";
document.getElementById("y").onclick=function(){
    p;
}
</script> 
p只是一个字符串而已,你想让它当成代码运行,这么写是没可能的

解决方案 »

  1.   

    var p = function(){alert('456');};
    document.getElementById("y").onclick=function(){
        p;
    }
    这么写试试
      

  2.   

    <a id="y">456 </a> 
    <script> 
    var p = "alert('456')"; 
    document.getElementById("y").onclick=function(){ 
       eval(p) ; 

    </script>
      

  3.   

    <a id="x">123 </a> 
    <script> 
    document.getElementById("x").onclick=function(){ 
        alert("123"); 

    </script> <a id="y">456 </a> 
    <script> 
    var p = "456"; 
    document.getElementById("y").onclick=function(){ 
        alert(p); 

    </script> 
      

  4.   


    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var p = function(){alert('456');};
    document.getElementById("y").onclick=function(){
        p();
    }
    //-->
    </SCRIPT>
      

  5.   

    <a id="x">123 </a> 
    <script> 
    document.getElementById("x").onclick=function(){ 
        alert("123"); 

    </script> <a id="y">456 </a> 
    <script> 
    var p = "alert('456')"; 
    document.getElementById("y").onclick=function(){ 
        eval(p); 

    </script>
      

  6.   

    楼主把alert()当作字符传递过去,解释性为字符来执行!
    而楼上的方法把function赋值给P(object)变量 ,
    楼上的可行
      

  7.   

    eval()能解决我提出的问题。
    现还有个实际的数组问题,代码如下:<script>
    var aryName=["从小到大排序","从大到小排序","取消"];
    var aryCode=["alert('1')","alert('2')","alert('3')"];
    function DrawDiv(arrayA,arrayB,obj){
           var aryElement = [];
       var br = document.createElement("br");
           var thediv = document.createElement("<div name='customerDiv'>");
       thediv.style.width = 120;
       thediv.style.height = 100;
                               thediv.style.left = 500;
       thediv.style.top = 600;
                               thediv.style.zIndex = 50;
       thediv.style.position = "absolute";
                               thediv.style.border = 1;
       thediv.style.borderStyle = "solid";
       thediv.style.borderColor ="#DDD"
       for (i=0;i<arrayA.length;i++){
           var t = i;
           aryElement[i] = document.createElement("<a name='customerDivA'>");
       aryElement[i].style.display="block"
                                   aryElement[i].innerHTML = arrayA[i];
       aryElement[i].onclick = function(){
           eval(arrayB[t]);
       }
                                   thediv.appendChild(aryElement[i]);
       }    document.body.appendChild(thediv);
       }
    </script><input type="button" value="按钮" onclick="DrawDiv(aryName,aryCode,this)">我要求,点击第一个a,alert("1"),第二个a,alert("2"),第三个a,alert("3")。实际情况是每次都是alert("3"),请帮忙解决红色BUG