javascript下载链接无法正常工作

时间:2013-07-05 11:07:49

标签: javascript html

我一直在尝试使用javascript下载exe文件,我以前使用单选按钮做了但现在我不知道我应该如何下载。该场景是有3个复选框admin,security,security1和我应该检查在点击下载按钮之后是否选择了哪个复选框组合,需要下载不同的zip文件。

 <button onclick="
if(!this.form.admin.checked&&!this.form.security.checked&&!this.form.security1.checked)
{
document.getElementById('errfn').innerHTML='Make atleast one selection';

}
else if (this.form.admin.checked&&this.form.security.checked&&this.form.security1.checked == 1)
{
alert('security32 and admin and security64');
}
else if (this.form.security.checked&&this.form.security1.checked == 1)
{
 alert('security64 and security32');
}
else if (this.form.admin.checked&&this.form.security.checked == 1)
{
alert('security32 and admin');
}
else if (this.form.admin.checked&&this.form.security1.checked == 1)
{
alert('security64 and admin');
}
else if (this.form.admin.checked == 1)
{
alert('admin is checked');
}
else if (this.form.security.checked == 1)
{
alert('security 32 is checked');
}
else if (this.form.security1.checked == 1)
{
alert('security64 is checked');
}
return false;

">Submit</button> 

我已经通过location.href替换了警报=&#34; images / download.exe&#34 ;;检查是否没有运气下载

用于单选按钮的代码是

<input value="1" type="radio" id="1" name="formselector" onclick="displayForm(this)">
function displayForm(c)
{
var radios = document.getElementById("1").value;
location.href="images/WismanWeb 32 bit.exe";
}

2 个答案:

答案 0 :(得分:0)

首先清理你的代码。

<强> HTML:

<button onclick="myMethod()">Submit</button>

<强> JS:

myMethod = function () {
    if (!this.form.admin.checked && !this.form.security.checked && !this.form.security1.checked) {
        document.getElementById('errfn').innerHTML = 'Make atleast one selection';

    } else if (this.form.admin.checked && this.form.security.checked && this.form.security1.checked == 1) {
        alert('security32 and admin and security64');
    } else if (this.form.security.checked && this.form.security1.checked == 1) {
        alert('security64 and security32');
    } else if (this.form.admin.checked && this.form.security.checked == 1) {
        alert('security32 and admin');
    } else if (this.form.admin.checked && this.form.security1.checked == 1) {
        alert('security64 and admin');
    } else if (this.form.admin.checked == 1) {
        alert('admin is checked');
    } else if (this.form.security.checked == 1) {
        alert('security 32 is checked');
    } else if (this.form.security1.checked == 1) {
        alert('security64 is checked');
    }
    return false;
}

答案 1 :(得分:0)

你真的应该通过定义一个函数来清理代码,然后从按钮调用它(就像你用单选按钮那样),而不是直接在标记中粘贴那个长例程。当你不得不重新访问这段代码来更新它时,你会感谢自己。

总体问题是您如何引用复选框。您有this.form.admin,它应该是this.document.form[0].admin。在上下文中,this关键字是window对象,因此您必须指定.document才能访问该文档,然后访问forms数组,其中您的表单可能是第一个元素(forms[0])。在您正确引用表单后,您可以按名称(.admin.security.security1)访问您的复选框。

另外,在这种情况下,并不重要(因为您没有使用id属性),而是按照规范id attributes must begin with a letter

工作演示:http://jsfiddle.net/8VU7L/2/

也就是说,您应该通过id而不是DOM导航到form元素来访问您的输入。它不那么脆弱,更精确,更容易阅读。

另外,您可能需要阅读Best Practice: Access form elements by HTML id or name attribute?

工作演示:http://jsfiddle.net/8VU7L/

最后,对于这种选择,使用位域(或者更确切地说,等效的JavaScript)可能会使代码更具可读性。除了可读性之外,使用这种技术交换URL的消息也很容易。

工作演示:http://jsfiddle.net/8VU7L/1/