0

我有 2 个文件。1个html和一个js。html 文件有复选框。当我选择一个复选框时,我正在设置一个标志。这个标志必须放在 .js 文件中。根据是否设置了标志,我将在 js 文件中执行一些操作。基本上,我该怎么做才能使从 html 文件中设置的标志在 javascript 文件中可用?

谢谢你。

html文件

function checkWIFI(){

if(document.getElementById('wifi').checked == true) 

wifiFlag.changeFlag(true);

else 

wifiFlag.changeFlag(false); 

}

脚本文件

wifiFlag = new testFlag(); 

function testFlag()

{

this.flag = false;

} 

testFlag.prototype.changeFlag = function(newFlag)

{

 this.flag = newFlag; 

} 
4

4 回答 4

2

您可以为此使用全局变量并在 JS 文件的顶部声明它们。无论您在 下声明什么window,都将成为全局变量。在您的 JS 文件中,在顶部添加以下行。

window.flag = 0;

在复选框中,当您更改时,设置标志。

<input type="checkbox" name="flag"
       onclick="if (this.checked) window.flag = 1; else window.flag = 0;" />

现在,您可以使用window.flag.

if (window.flag == 1)
    // Do something
else
    // Do something
于 2013-02-15T04:42:25.910 回答
0

我建议的最安全的方法是使用可用的数据属性。例如,

<input type="checkbox" name="firstCheckbox" data-flag="old">

这种方法允许您优雅地回退,因为旧浏览器不会抱怨。如果您有多个复选框,则不需要为每个复选框进行额外标记。使用全局变量可能会导致问题和命名空间问题。隐藏值也是一种很好的方法:)

您可以使用以下两种方式之一获取数据属性的值。1) getAttribute,旧的 JavaScript 方法,你想获取数据标志。在jQuery中,使用attr(),2) HTML5的方式,存储在.dataset数组属性中,所以.dataset['flag'],在jQuery中相当于是.data('flag')

安吉拉

于 2013-02-15T05:02:50.110 回答
0

我建议您编写 .js 文件中的 javascript,以便可以为其提供必要的上下文信息。因此,编写函数或可以传递复选框值的东西。这将有助于使您的代码更具可重用性,并且不会被绑定到全局窗口。您可以在复选框值更改时启动此代码,枚举复选框值并将它们传递给您的代码。我建议不要使用全局变量。如果你绝对必须,那么命名它们。

于 2013-02-15T04:49:04.700 回答
0

在 html 中声明一个隐藏变量

<input type="hidden" id="hidden1" >

并为其设置值

document.getElementById('hidden1').value = '//your returned value';

访问脚本中的隐藏值

var x=document.getElementById("hidden1").value;
alert(x);

希望这对你有用..

于 2013-02-15T04:45:20.537 回答