jsfiddle identical(?) fiddles with button to change text 一个工作一个不
jsfiddle identical(?) fiddles with button to change text one works one does not
HTML:-
<h1 id="title">Javascript example no.2</h1>
<input type="text" id="myTextField"/>
<input type="submit" id="byBtn" value="Change" onclick="F_change()"/>
JAVASCRIPT:-
function change() {
var myNewTitle = document.getElementById('myTextField').value;
if (myNewTitle.length == 0) {
alert('Write Some real Text please.');
return;
}
var title = document.getElementById('title');
title.innerHTML = myNewTitle;
}
当用户在文本字段中输入文本并单击按钮时,新文本将替换标题文本。
这个jsfiddle works OK (thanks to Emad Elsaid: https://jsfiddle.net/user/blazeeboy/fiddles/).
这个jsfiddle不行。
这让我很生气,请帮忙。
更新
我应该发现函数名称中明显的不匹配(F_Change 与更改)。
对我来说最重要的一课是设置 jsfiddle...javascript...加载类型
来自 "on load"
到"no wrap - in ".
感谢所有响应者。
onclick 函数名称不同,F_change() 与函数名称不匹配
改变这个:
function change() {
对此:
function F_change() {
然后将 Javascript
-> Load Type
更改为 "No Wrap - in <head>"
将代码更改为:
<html>
<body>
<h1 id="title">Javascript example no.2</h1>
<input type="text" id="myTextField"/>
<input type="submit" id="byBtn" value="Change" onclick="F_change()"/>
<script>
function F_change() {
var myNewTitle = document.getElementById('myTextField').value;
if (myNewTitle.length == 0) {
alert('Write Some real Text please.');
return false;
}
var title = document.getElementById('title');
title.innerHTML = myNewTitle;
}
</script>
</body>
</html>
在 HTML 中,Onclick 是 F_change() 但在 javascript 中,他们调用了 change()。因此 onclick 和函数名称不同。
所以我们可以使用与函数名相同的名称
我们可以使用 onclick="F_change()" 函数 F_Change() 或 onclick="change()" 函数 Change()
问题是由 Javascript 加载到 HTML 的方式引起的。在工作的 JSFiddle 中,脚本在脚本被放置在文档的 head
时加载,而在另一个 JSFiddle 中,脚本被放置在文档触发 [ 时调用的函数的主体中=13=] 事件。这些加载脚本的方法在 JSFiddle 中分别命名为 "no wrap" 和 "onLoad"。只需比较下面 HTML 代码的两个片段,它们取自您在问题中链接到的 JSFiddle 页面。
有效的 JSFiddle:
<script type='text/javascript'>//<![CDATA[
function change(){
...
}
//]]>
</script>
不起作用的 JSFiddle:
<script type='text/javascript'>//<![CDATA[
window.onload=function(){
//... *** LINKED ON STACK EXCHANGE - DO NOT UPDATE, FORK INSTEAD ***
function change() {
...
}
}//]]>
</script>
因为 change
函数是在 window.onload
回调函数的范围内定义的,所以在该函数外部定义的 Javascript 是不可见的。因此,您不能从内联 Javascript 中调用它。无需更改函数名称,只需将 Load Type
(位于齿轮图标下方)更改为 "no wrap",一切正常。
HTML:-
<h1 id="title">Javascript example no.2</h1>
<input type="text" id="myTextField"/>
<input type="submit" id="byBtn" value="Change" onclick="F_change()"/>
JAVASCRIPT:-
function change() {
var myNewTitle = document.getElementById('myTextField').value;
if (myNewTitle.length == 0) {
alert('Write Some real Text please.');
return;
}
var title = document.getElementById('title');
title.innerHTML = myNewTitle;
}
当用户在文本字段中输入文本并单击按钮时,新文本将替换标题文本。
这个jsfiddle works OK (thanks to Emad Elsaid: https://jsfiddle.net/user/blazeeboy/fiddles/).
这个jsfiddle不行。
这让我很生气,请帮忙。
更新
我应该发现函数名称中明显的不匹配(F_Change 与更改)。
对我来说最重要的一课是设置 jsfiddle...javascript...加载类型
来自 "on load"
到"no wrap - in ".
感谢所有响应者。
onclick 函数名称不同,F_change() 与函数名称不匹配
改变这个:
function change() {
对此:
function F_change() {
然后将 Javascript
-> Load Type
更改为 "No Wrap - in <head>"
将代码更改为:
<html>
<body>
<h1 id="title">Javascript example no.2</h1>
<input type="text" id="myTextField"/>
<input type="submit" id="byBtn" value="Change" onclick="F_change()"/>
<script>
function F_change() {
var myNewTitle = document.getElementById('myTextField').value;
if (myNewTitle.length == 0) {
alert('Write Some real Text please.');
return false;
}
var title = document.getElementById('title');
title.innerHTML = myNewTitle;
}
</script>
</body>
</html>
在 HTML 中,Onclick 是 F_change() 但在 javascript 中,他们调用了 change()。因此 onclick 和函数名称不同。
所以我们可以使用与函数名相同的名称
我们可以使用 onclick="F_change()" 函数 F_Change() 或 onclick="change()" 函数 Change()
问题是由 Javascript 加载到 HTML 的方式引起的。在工作的 JSFiddle 中,脚本在脚本被放置在文档的 head
时加载,而在另一个 JSFiddle 中,脚本被放置在文档触发 [ 时调用的函数的主体中=13=] 事件。这些加载脚本的方法在 JSFiddle 中分别命名为 "no wrap" 和 "onLoad"。只需比较下面 HTML 代码的两个片段,它们取自您在问题中链接到的 JSFiddle 页面。
有效的 JSFiddle:
<script type='text/javascript'>//<![CDATA[
function change(){
...
}
//]]>
</script>
不起作用的 JSFiddle:
<script type='text/javascript'>//<![CDATA[
window.onload=function(){
//... *** LINKED ON STACK EXCHANGE - DO NOT UPDATE, FORK INSTEAD ***
function change() {
...
}
}//]]>
</script>
因为 change
函数是在 window.onload
回调函数的范围内定义的,所以在该函数外部定义的 Javascript 是不可见的。因此,您不能从内联 Javascript 中调用它。无需更改函数名称,只需将 Load Type
(位于齿轮图标下方)更改为 "no wrap",一切正常。