我有一种巨大的感觉我只是在这里愚蠢,但是我还是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.');
}
}
提前感谢您的帮助。
此致
-B。
修改
我是个白痴。谢谢你们。
答案 0 :(得分:3)
这里的一些事情,它应该是document.getElementsByTagName
(复数),你需要更改设置,这将在正文关闭之前嵌入JS代码。
var a = document.getElementsByName('field-one')[0];
我在这里使用[0]
来访问数组的第一个元素,因为如果遇到多个匹配元素,document.getElementsByName()
会返回一个元素数组。如果要选择特定的一个,请确保以更具体的方式选择DOM元素。
将加载类型更改为
没有换行
<body>
(<head>
也能正常工作)
答案 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)
现在为什么不定义函数?也许它没有在正确的位置定义?
这是一个updated fiddle。请注意,我在第3行getElementsByName
修正了拼写错误。
答案 3 :(得分:1)
首先,将您的seeting
javascript LOAD TYPE
设置为head
。
最后,getElementsByName
不是getElementByName
,它会返回数组,因此您需要解析。
let a = document.getElementsByName('field-one')[0];
希望它有用。