以下脚本可以正常工作,但我需要做一些修正。在每个函数中,我得到了不同公式的值。但是我倾向于在不同的函数中复制相同的代码行。
实施例
function one(){ var v1= document.getElementById('one').value; }
function two(){ var v1= document.getElementById('one').value; }
我想声明所有变量一次,而不仅仅使用我需要的特定函数。如果我在顶部声明它们而不是一次它们被调用它们仍然保持原始值,所以我需要在当前更改时将该值更新为当前值。
答案 0 :(得分:3)
如果你这样做,你的代码将很难阅读。
取而代之的是
var myVars;
window.onload=function() {
myVars = {
'list_price': document.getElementById('list_price'),
'negotiated': document.getElementById('negotiated'),
.
.
'lease_payment': document.getElementById('lease_payment')
}
现在你可以做到
var price = myVars.list_price.value;
或者可能添加一个功能
function getVal(id) {
var val = document.getElementById(id).value;
if (val =="" || isNaN(val)) return 0;
return parsetInt(val,10);
}
现在你可以做到
var price = getVal("list_price");
答案 1 :(得分:1)
有两种方法可以解决这个问题:
1)您可以为change
事件或更改全局变量的keyup
事件添加侦听器:
// save initial value
var val = document.getElementById('one').value;
// update the value when input is changed
addEventListener(document.getElementById('one'), 'change', function() {
val = document.getElementById('one').value;
});
console.log(val);
2)您可以使用始终返回当前值的函数:
var val = function() { return document.getElementById('one').value; };
console.log(val());
2b)如果你讨厌括号,你可以定义一个使用上面函数作为getter的属性:
Object.defineProperty(window, 'one', {
get : function() { return document.getElementById('one').value; }
});
console.log(one);
答案 2 :(得分:1)
(function(){
// code goes here
}());