0

次のスクリプトは正しく動作しますが、いくつか修正する必要があります。各関数で、さまざまな式に必要な値を取得しています。ただし、同じコード行を異なる関数で複製する傾向があります。

元。

function one(){ var v1= document.getElementById('one').value; }
function two(){ var v1= document.getElementById('one').value; }

完全なコード

すべての変数を一度宣言し、特定の関数に必要なものだけを使用したいと考えています。それらが呼び出されるよりも一番上で宣言すると、元の値が保持されるため、もちろん変更された場合はその値を現在の値に更新する必要があります。

4

3 に答える 3

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");
于 2013-11-08T13:12:31.613 に答える
1

mplungjan のソリューションは素晴らしいものです。グローバル変数がウィンドウ スコープに漏れることが心配な場合は、すぐに呼び出される関数式でコードをラップして、それが起こらないようにします。

(function(){
  // code goes here
}());
于 2013-11-08T13:19:20.443 に答える
1

これには 2 つの方法があります。

  1. 値が変更されたときに変数を更新する
  2. 常に正しい値を返す関数を使用する

change1)イベントまたは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) 括弧が嫌いな場合は、上記の関数をゲッターとして使用するプロパティを定義できます。

Object.defineProperty(window, 'one', {
  get : function() { return document.getElementById('one').value; }
});

console.log(one);
于 2013-11-08T13:12:32.677 に答える