使用Javascript中的函数重新定义函数
下面是一个脚本,它做了一些事情,但最重要的是,它不断地将indynamiceeditmode的值从0更改为1,从1更改为0。我正在尝试创建一个函数,如果inDynamicEditMode为0(或1),它将重新定义函数payx()。我将发布整个脚本,以防删除重要内容使用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 = $(
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();
}