Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由于条件原因,Javascript无法启用按钮_Javascript_Html_Javascript Events - Fatal编程技术网

由于条件原因,Javascript无法启用按钮

由于条件原因,Javascript无法启用按钮,javascript,html,javascript-events,Javascript,Html,Javascript Events,我有一个纯JS下面是不工作的,因为它必须满足条件,然后按钮将被启用 它可以在JSFIDLE上工作,但不能在代码中工作。 我删除了另一个条件来测试出了什么问题。我是不是遗漏了什么 JS: var show=document.getElementById('show'); var button=document.getElementById('sub1'); var条件={ 赖斯3:错 }; 函数setCondition3(e){ conditions.cond3=e.target.value&&

我有一个纯JS下面是不工作的,因为它必须满足条件,然后按钮将被启用

它可以在JSFIDLE上工作,但不能在代码中工作。 我删除了另一个条件来测试出了什么问题。我是不是遗漏了什么

JS:


var show=document.getElementById('show');
var button=document.getElementById('sub1');
var条件={
赖斯3:错
};
函数setCondition3(e){
conditions.cond3=e.target.value&&e.target.value.length>0;
启用按钮(条件);
}
功能启用按钮(选项){
如果(选项3){
按钮。删除属性(“禁用”);
}否则{
setAttribute('disabled',true);
}
}
show.addEventListener('change',setCondition3,false);
HTML:


下单
你的细节
客户类型:
客户类型?
顾客
贸易

它可以在JSFIDLE上工作,但不能在代码中工作

这几乎总是意味着您试图在元素存在之前访问它,因为JSFIDLE(令人难以置信的惊讶)的默认设置是将所有JavaScript封装在它分配给
window.onload
的函数中,这意味着它要到页面加载过程的很晚才会运行

将您的
脚本
标记放在它们引用的HTML下面。通常,除非你有很强的理由去做其他事情,否则最好把你的脚本放在末尾,就在结束标记之前

以下是您的代码,在元素的HTML之后使用
脚本


下单
您的详细信息客户类型:
客户类型?
顾客
贸易

var show=document.getElementById('show'); var button=document.getElementById('sub1'); var条件={ 赖斯3:错 }; 函数setCondition3(e){ conditions.cond3=e.target.value&&e.target.value.length>0; 启用按钮(条件); } 功能启用按钮(选项){ 如果(选项3){ 按钮。删除属性(“禁用”); }否则{ setAttribute('disabled',true); } } show.addEventListener('change',setCondition3,false);
它可以在JSFIDLE上工作,但不能在代码中工作

这几乎总是意味着您试图在元素存在之前访问它,因为JSFIDLE(令人难以置信的惊讶)的默认设置是将所有JavaScript封装在它分配给
window.onload
的函数中,这意味着它要到页面加载过程的很晚才会运行

将您的
脚本
标记放在它们引用的HTML下面。通常,除非你有很强的理由去做其他事情,否则最好把你的脚本放在末尾,就在结束标记之前

以下是您的代码,在元素的HTML之后使用
脚本


下单
您的详细信息客户类型:
客户类型?
顾客
贸易

var show=document.getElementById('show'); var button=document.getElementById('sub1'); var条件={ 赖斯3:错 }; 函数setCondition3(e){ conditions.cond3=e.target.value&&e.target.value.length>0; 启用按钮(条件); } 功能启用按钮(选项){ 如果(选项3){ 按钮。删除属性(“禁用”); }否则{ setAttribute('disabled',true); } } show.addEventListener('change',setCondition3,false);
将其放在HTML之后是否是一种好的做法?这可能就是为什么我这么做都是错的while@DLum:是的,这就是我所说的“通常情况下,除非你有很强的理由去做其他事情,否则最好把你的脚本放在末尾,就在结束标记之前。”把它放在HTML后面是一种好的做法吗?这可能就是为什么我这么做都是错的while@DLum:是的,这就是我所说的“通常情况下,除非你有很强的理由做其他事情,否则最好将脚本放在末尾,就在结束标记之前。”
<script type = "text/javascript">
var show = document.getElementById('show');
var button = document.getElementById('sub1');

var conditions = {
  cond3: false
};

function setCondition3(e) {
  conditions.cond3 = e.target.value && e.target.value.length > 0;
  enableButton(conditions);
}

function enableButton(options) {
  if (options.cond3) {
    button.removeAttribute('disabled');
  } else {
    button.setAttribute('disabled', true);
  }
}

show.addEventListener('change', setCondition3, false);
</script>
<section id="placeOrder">
            <h2>Place order</h2>
            Your details
            Customer Type: <select id="show" name="customerType" onchange="change(this)">
                <option value="">Customer Type?</option>
                <option value="ret">Customer</option>
                <option value="trd">Trade</option>
            </select>

<p><input type="submit" name="submit" value="Order now!" id="sub1" disabled="disabled"/></p>