JsFiddle Javascript没有解雇?

时间:2017-07-03 14:19:22

标签: javascript jsfiddle

我有一种巨大的感觉我只是在这里愚蠢,但是我还是Js不会在JsFiddle中解雇?

我在这里建立了这个片段,但似乎无法解决这个问题。我可能错过了一些非常明显的东西,但对任何帮助都会感激不尽。

HTML     

  <div id="col">

    <h3 class="txt spacer">Dynamic input, based on select value...</h3>
    <input type="text" name="field-one" class="txt stretch" />

    <div class="boxes">
      <input type="checkbox" id="box-2" onChange="myFunction()" checked>
      <label for="box-2">Apply a name?</label>
    </div>
  </div>
</div>

的Javascript

function myFunction() {
  // Text field element.
  var a = document.getElementByName('field-one');
  // Checkbox element.
  var b = document.getElementById('box-2');

  if (b.checked) {
    a.disabled = false;
    a.placeholder = 'Not Applicable';
    alert('Checkbox State Changed.');
  } else {
    a.disabled = true;
    a.placeholder = 'Enter Your Full Name';
    alert('Checkbox State Changed.');
  }
}
  

JS FIDDLE

提前感谢您的帮助。

此致

-B。

修改

  我是个白痴。谢谢你们。

4 个答案:

答案 0 :(得分:3)

这里的一些事情,它应该是document.getElementsByTagName(复数),你需要更改设置,这将在正文关闭之前嵌入JS代码。

var a = document.getElementsByName('field-one')[0];

我在这里使用[0]来访问数组的第一个元素,因为如果遇到多个匹配元素,document.getElementsByName()会返回一个元素数组。如果要选择特定的一个,请确保以更具体的方式选择DOM元素。

加载类型更改为

  

没有换行<body><head>也能正常工作)

Demo

答案 1 :(得分:3)

jsFiddle的Javascript加载类型设置为onLoad。这将嵌套您的myFunction函数,因此无法在全局范围内使用。

您可以更改加载类型,也可以在window上设置变量:

window.myFunction = function()....

注意:然后您收到getElementByName的其他错误。这不是document的函数。您可能正在寻找getElementsByName

答案 2 :(得分:2)

打开DevTools,你会看到

Uncaught ReferenceError: myFunction is not defined
    at HTMLInputElement.onchange ((index):192)

现在为什么不定义函数?也许它没有在正确的位置定义?

查看加载JavaScript的位置并将其更改为: enter image description here

这是一个updated fiddle。请注意,我在第3行getElementsByName修正了拼写错误。

答案 3 :(得分:1)

首先,将您的seeting javascript LOAD TYPE设置为head

最后,getElementsByName不是getElementByName,它会返回数组,因此您需要解析。

let a = document.getElementsByName('field-one')[0];

希望它有用。