脚本未在框架中打开的页面上运行

时间:2016-06-12 13:35:29

标签: javascript html

当我按下按钮时,我有一个运行脚本的页面。当页面在单独的窗口中打开时,它可以工作,但是当我在其他页面的框架内打开该页面时,单击同一个按钮时不会发生任何事情。可能是什么问题呢?

代码:

<form class="inout">
Input:<br>
<textarea rows="4" cols="50" id="in"></textarea>
</form>


<form class="inout">
Output:<br>
<textarea rows="4" cols="50" id="out" readonly></textarea>
</form>

<br>
<button id="btn" onclick="rucsac();" >Ruleaza!</button>

脚本在头部声明:

<script src="probleme.js"></script>

如上所述,它在单独打开时正常运行,但在框架中它不起作用。 (我使用Chrome) 和脚本:

function read(params)
{
var mytext= document.getElementById("in").value;
var i=0,l=0;
while(i<mytext.length)
{
    var nr=0;
    while(mytext[i]>='0'&&mytext[i]<='9'&&i<mytext.length)
    {
        nr=nr*10+(mytext[i]-'0');
        i++;
    }
    params[l++]=nr;
    while(!(mytext[i]>='0'&&mytext[i]<='9')&&i<mytext.length) 
    {
        if((mytext[i]>='a'&&mytext[i]<='z')||(mytext[i]>='A'&&mytext[i]<='Z')) return 0;
        i++;
    }
}
}
function rucsac()
{
var v = new Array();
document.getElementById("out").value="";
if(read(v)==0)
{
 document.getElementById("out").value="Datele de intrare contin caractere necorespunzatoare!";
 return 0;
}
if(v.length===0)
{
document.getElementById("out").value="Cititi datele inainte de rulare!";
 return 0;
}
var n=v[0],g=v[1];
if(v.length<n+2)
{
document.getElementById("out").value="Date incomplete!";
 return 0;

}
var i,j,l=1,MAX=0;
var w= new Array(100001), p=new Array(100001), pf=new Array(100001).fill(0);
   for(i=1;i<=n;i++)
        {
    w[i]=v[++l];
    p[i]=v[++l];
    }

    for(i=1;i<=n;i++)
        for(j=g-w[i];j>=0;j--)
          if(pf[j+w[i]]<pf[j]+p[i])
    {
        pf[j+w[i]]=pf[j]+p[i];
        if(pf[j+w[i]]>MAX) MAX=pf[j+w[i]];
    }
document.getElementById("out").value+=MAX;
}

1 个答案:

答案 0 :(得分:0)

也在iframe标记内声明您的<script src="probleme.js"></script>。我相信它目前正位于主网页的<head>标记中。

您看到此问题是因为父JS无法访问iframe中的事件。您应该将脚本包含在iframe的源代码中。