使用Javascript中的函数重新定义函数

使用Javascript中的函数重新定义函数,javascript,Javascript,下面是一个脚本,它做了一些事情,但最重要的是,它不断地将indynamiceeditmode的值从0更改为1,从1更改为0。我正在尝试创建一个函数,如果inDynamicEditMode为0(或1),它将重新定义函数payx()。我将发布整个脚本,以防删除重要内容 var start = 0.01 var $input = $("#oddsInput") var $odds = $("#oddsOverUnder") var $button = $("#roll") var $bet = $(

下面是一个脚本,它做了一些事情,但最重要的是,它不断地将indynamiceeditmode的值从0更改为1,从1更改为0。我正在尝试创建一个函数,如果inDynamicEditMode为0(或1),它将重新定义函数payx()。我将发布整个脚本,以防删除重要内容

var start = 0.01

var $input = $("#oddsInput")
var $odds = $("#oddsOverUnder")
var $button = $("#roll")
var $bet = $("#bet")
var $pay = $("#oddsPayout.btn.btn-primary.btn-xlg.btn-block")
var inDynamicEditMode   = true; 

function basex() {
    $bet.val(start)
}

function timesx() {
    var lol = document.getElementById('bet').value; 
    $bet.val(lol * 8)
}

function paylowx() {
    $pay.click()
    document.getElementById("oddsInput").value = "1.2";
    $odds.click()
}

function payhighx() {
    $pay.click()
    document.getElementById("oddsInput").value = "5.2";
    $odds.click()
}

function payx(){

}

var mars = document.createElement('div');

mars.innerHTML = '' +
    '<div class="form-group">' +
    '<div class="text-center col-sm-6 col-sm-offset-3">' +
    '<input id="base" type="button" value="BASE" onClick="basex()">' +
    '<input id="times" type="button" value="x8" onClick="timesx()">' +
    '<input id="paylow" type="button" value="1.2" onClick="paylowx()">' +
    '<input id="payhigh" type="button" value="5.2" onClick="payhighx()">' +
    '</div>' +
    '</div>';
document.getElementsByClassName('text-center col-sm-6 col-sm-offset-3')[0].appendChild(mars);

var mybase = document.querySelector("#base");
mybase.style.backgroundColor = "#131313";
mybase.style.borderStyle = "none";
mybase.style.borderRadius = "6px 0px 0px 0px"
mybase.style.color = "#fff"
mybase.style.fontSize = "18px"
mybase.style.width = "80px"
mybase.style.height = "40px"

var mytimes = document.querySelector("#times");
mytimes.style.backgroundColor = "#131313";
mytimes.style.borderStyle = "none";
mytimes.style.borderRadius = "0px 6px 0px 0px"
mytimes.style.color = "#fff"
mytimes.style.fontSize = "18px"
mytimes.style.width = "80px"
mytimes.style.height = "40px"

var mypaylow = document.querySelector("#paylow");
mypaylow.style.backgroundColor = "#131313";
mypaylow.style.borderStyle = "none";
mypaylow.style.borderRadius = "0px 0px 0px 6px"
mypaylow.style.color = "#fff"
mypaylow.style.fontSize = "18px"
mypaylow.style.width = "80px"
mypaylow.style.height = "40px"

var mypayhigh = document.querySelector("#payhigh");
mypayhigh.style.backgroundColor = "#131313";
mypayhigh.style.borderStyle = "none";
mypayhigh.style.borderRadius = "0px 0px 6px 0px"
mypayhigh.style.color = "#fff"
mypayhigh.style.fontSize = "18px"
mypayhigh.style.width = "80px"
mypayhigh.style.height = "40px"

var myhalf = document.querySelector("#halfBetButton");
myhalf.style.display = "none"

var mydouble = document.querySelector("#doubleBetButton");
mydouble.style.display = "none"


function roll() {
    $bet.val(start)
    $button.click()
    setTimeout(function() {

        var tr = document.querySelector("#myBetsTable tr:nth-child(2)")
        var cls = tr.getAttribute('class')

        if (cls === 'success'){
            payx()
        }
        else{
            payx()
            inDynamicEditMode ^= true
        }
            $button.click();
    setTimeout(function() {
            $button.click();
            },1000);
            },1000);
}

setInterval(roll, 2000)

您可以像声明变量一样声明函数

// Therefore
payx = function() {
  // script
}
payx();
在代码中

if (inDynamicEditMode == 0) {
  payx = function() {
    $pay.click()
    document.getElementById("oddsInput").value = "1.2";
    $odds.click()
  }
}

if(inDynamicEditMode == 1){
  payx = function() {
    $pay.click()
    document.getElementById("oddsInput").value = "5.2";
    $odds.click()
  }
}

如果你问为什么要这样做,那么经常调用该函数会很有效。

首先,你可以定义一个
payx()
函数,它接受
indynamiceeditmode
参数作为参数,如下所示:

function payx(inDynamicEditMode) {
  if (inDynamicEditMode === 0) {
    // do stuff
  }
  if (inDynamicEditMode === 1) { 
    // do some other stuff
  }
}
或者,您可以将函数表达式指定给
payx()
,如下所示:

// somewhere above
var payx = function() {
  // do stuff, maybe default?
};

if (inDynamicEditMode === 0) {
  payx = function() {
    // do stuff
  };
}

if (inDynamicEditMode === 1) {
  payx = function() {
    // do other stuff
  };
}
每当您怀疑
inDynamicEditMode

中有更改时,都需要调用上述示例。为什么不使用一个函数(无需重新定义)并使用该函数中的三元运算符来确定要分配的值:

function payx() {
    $pay.click();
    document.getElementById("oddsInput").value = inDynamicEditMode ? "5.2" : "1.2";
    $odds.click();
}

不,为什么不保留一个payx函数,其中包含构造
if(indynamiceeditmode==0){
?另外,你没有问任何问题……你能对给出的答案给出一些反馈,并决定接受哪一个吗?你仍然应该在前面添加一个
var payx;
来实际声明变量。@Bergi没有“应该”。将变量声明为全局变量是可以的。如果他需要,他可以声明它。是的,它是“应该”,在严格模式下,它将是“必须”“。您发布的代码没有声明任何内容,它只是一个意外地以全局变量结尾的赋值。@Bergi是的,我们可以就此展开讨论,但因为OP没有声明任何内容为“严格”,没有应该。使用严格模式的人应该知道如何声明变量。现在每个人都应该使用严格模式…
function payx() {
    $pay.click();
    document.getElementById("oddsInput").value = inDynamicEditMode ? "5.2" : "1.2";
    $odds.click();
}