有没有关键字'大写'在javascript
is there any keyword 'capital' in javascript?
我正在调用一个名为'capital()'的函数,但它不工作,'capita'正在工作。这是js中的关键字吗?
这里是代码查看它,测试它
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>HTML Select Element</title>
<script type="text/javascript">
function capita(){
alert('yes');
c = new Array("Islamabad", "Tehran", "Bejing", "New Delhi", "Kabul");
var i;
i = document.f1.country.selectedIndex;
document.f1.capital.value=c[i];
}
</script>
</head>
<body>
<h3>Countries and Capital</h3>
<form name="f1" method="post">
The capital of
<select name="country" id="country" onChange="capita();">
<option selected>Pakistan
<option>Iran
<option>China
<option>India
<option>Afghanistan
</select>
is <input type="text" name="capital" value="Islamabad"/>
</form>
</body>
</html>
capital
是对输入元素的引用。
<input type="text" name="capital" value="Islamabad"/>
这是因为当您使用内联处理程序时,会将某些DOM元素插入到变量作用域链中。具体插入哪些元素在某种程度上取决于浏览器。
如果您将select
元素的onchange
处理程序更改为:
<select name="country" id="country" onChange="alert(capital);">
你会看到它发出警告:
"[object HTMLInputElement]"
…或者类似的。
<<p> JSFIDDLE演示/strong>下面是一个更新的例子,它改变了你的内联处理程序,像这样:
<select name="country" id="country" onChange="alert('LOCAL: ' + capital +
''n'nGLOBAL: ' + window.capital);">
现在它警告capital
和window.capital
。如果你在不同的浏览器中测试,你可能会得到不同的结果。
铬显示:
LOCAL: [object HTMLInputElement]
GLOBAL: function capital() {}
不,capital
不是JavaScript关键字。它既不在当前关键字列表中,也不在将来保留词列表中。(甚至不包括前一个规范中较长的列表)
你的代码的问题是,在一些浏览器中,所有的name
值最终是全局的。当然,在全局作用域中声明的所有函数也是如此。因此,在这些浏览器上,您的函数capital
和标记中带有name
"大写"的元素之间存在冲突。改变它们中的任何一个都可以解决问题。Internet Explorer尤其存在这个问题。
<form name="f1" method="post">
The capital of
<select name="country" id="country">
<option selected>Pakistan</option>
<option>Iran</option>
<option>China</option>
<option>India</option>
<option>Afghanistan</option>
</select>
is <input type="text" name="capital" value="Islamabad">
</form>
JavaScript(仅与全局符号相关的更改;还有其他一些我也建议修改的地方):
// Everything within a scoping function
(function() {
// The capitals
var capitals = [
"Islamabad",
"Tehran",
"Bejing",
"New Delhi",
"Kabul"
];
// Hook the window#load event
hookEvent(window, "load", handleLoad);
// Handle the load event
function handleLoad() {
// Hook the "change" event on "country"
hookEvent(
document.getElementById("country"),
"change",
countryChanged
);
}
// Handle a change of the country
function countryChanged(event) {
document.f1.capital.value = capitals[document.f1.country.selectedIndex];
}
// === Utility functions, don't need if you have a decent library
function hookEvent(element, eventName, handler) {
// Very quick-and-dirty, recommend using a proper library,
// this is just for the purposes of the example.
if (typeof element.addEventListener !== "undefined") {
element.addEventListener(eventName, handler, false);
}
else if (typeof element.attachEvent !== "undefined") {
element.attachEvent("on" + eventName, handler);
}
else {
element["on" + eventName] = handler;
}
}
})();
现场演示
相关文章:
- 使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
- 如何使用Javascript在给定的句子中找到大写单词并在其前面添加一个字符
- 在JavaScript中将字符串中的第一个字母更改为大写
- JavaScript-querySelectorAll和小写/大写
- javascript将html实体条目发布后的下一个字母大写
- Regex模式,用于检查字符串中每个单词的第一个字母(如果是Javascript中的大写字母)
- 有没有一个函数会忽略javascript中的大写字母
- 浏览器中出现javascript初始大写函数错误
- 正则表达式和 javascript:匹配数字后跟空格和大写字母之间的所有内容
- 为什么javascript函数名称custom是一个小写的单词,后跟一个大写的单词,就像'orangeCost'一样
- 如何在 JavaScript 中将数组中每个单词的首字母大写
- Javascript正则表达式,需要一个大写字母、一个小写字母和一个数字,并允许特殊
- Javascript:在字符串中,替换大写字母及其后面的所有字母
- Javascript-如何连接单词脚本的两个大写首字母
- 编写一个包含一个大写字母和六个数字的javascript表达式
- 我可以使用javascript将提示输入的第一个字母大写吗
- Javascript:输入框-自动大写第一个字母,但可以重写
- Javascript大写不起作用
- 如何使用javascript大写我的域名的字母
- Javascript-大写字母变成小写字母,反之亦然