0

我只是想将表单的文本输入发布到带有返回的 iframe 中,没有提交按钮。

function changesrc(main, url) {
document.getElementById('main').setAttribute('src', url);
}

我的主要 iframe

<div id="frame"><iframe id="main" name="main" type="text/html" src="" frameborder="0" allowtransparency="true"></iframe>

实际的文本输入父表单让我失望了......

<form id="url" onSubmit='changesrc('main', target)' method="post"><div id=target><input type="text" name="target" id="target" size="65"></div></form>

请不要影响或降级,我知道这段代码很糟糕......

谢谢

4

2 回答 2

1

您发布的代码有几个明显的问题:

function changesrc(main, url) {
    document.getElementById('main').setAttribute('src', url);
}

此外,要访问元素srcmain,只需使用点表示法,结果如下:

function changesrc(main, url) {
    document.getElementById(main).src = url;
}

在上面的函数中,你应该使用提供给函数的参数作为字符串中的字符串document.getElementById() 字符串(就像你现在一样),但是如果你正在传递参数,你可能应该使用它(否则没有意义)。

<form id="url" action='changesrc('main', target)' method="post">
    <div id=target>
        <input type="text" name="target" id="target" size="65"></div>
    </form>
</div>

在此,您尝试使用相同的字符串分隔符在字符串中引用字符串。要解决该问题,您应该在双引号分隔的字符串中使用单引号:

<form id="url" action="changesrc('main', target)" method="post">

或者在单引号分隔的字符串中使用双引号:

<form id="url" action='changesrc("main", target)' method="post">

action属性用于指定表单数据应该提交到哪里,例如服务器端脚本;不适用于客户端事件处理;如果必须使用内联事件处理,则应使用onkeypress事件处理程序:

<form id="url" onkeypress="changesrc('main', target)" method="post">
于 2012-08-18T23:51:16.620 回答
0

检查您的代码:

<form id="url" action='changesrc('main', target)' method="post"><div id=target><input type="text" name="target" id="target" size="65"></div></form>

你有action='changesrc('main', target)'。应该是action="changesrc('main', target)",因为属性应该是双引号,如果你想要它们单引号,你应该转义其他单引号。

target属性是您要将表单发送到的文件。您想在提交changesrc表单时执行,所以它是onsubmit="changesrc('main',target)".

但是我们有onsubmit="changesrc('main', target)". target但是,您需要输入的值而不是未定义的变量id="target"。那么,就是onsubmit="changesrc('main', document.getElementById('target').value)"。但是在调用那个函数之后,我猜你不想将表单发送到服务器,所以我们需要onsubmit="changesrc('main',document.getElementById('target').value);return false;"

但问题是你有两个元素id="target"。因此,将其从<div>.

那么,你有

function changesrc(main, url) {
    document.getElementById('main').setAttribute('src', url);
}

好吧,它有效,但您没有使用参数main。我猜你想要

function changesrc(main, url) {
    document.getElementById(main).setAttribute('src', url);
}

最终代码是:

HTML:

<form id="url" onsubmit="changesrc('main',document.getElementById('target').value);return false;" method="post">
    <div>
        <input type="text" name="target" id="target" size="65">
    </div>
</form>

<div id="frame">
    <iframe id="main" name="main" type="text/html" src="" frameborder="0" allowtransparency="true"></iframe>
</div>

JavaScript:

function changesrc(main, url) {
    document.getElementById(main).setAttribute('src', url);
}

你可以在这里看到它:http: //jsfiddle.net/UsGJb/

于 2012-08-18T23:54:06.443 回答