JavaScript toUpperCase()不工作
我试图制作一个小脚本,确定输入的文本是完全大写、完全小写还是两者都不大写。在这里:JavaScript toUpperCase()不工作,javascript,Javascript,我试图制作一个小脚本,确定输入的文本是完全大写、完全小写还是两者都不大写。在这里: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <script&g
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<script>
function caps (p1){
console.log ("yes");
if (p1.toUpperCase() == p1){
alert ("Is uppercase")
}
else if (p1.toLowerCase() == p1){
alert ("Is lowercase")
}
else {
alert ("Is mix of both");
}
}
</script>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Write something<br />
<input type="text" name="numero" id="numero" />
</label>
</p>
<p>
<input onclick="caps(numero)" type="submit" name="button" id="button" value="Submit" />
</p>
</form>
</body>
</html>
无标题文件
功能盖(p1){
console.log(“是”);
如果(p1.toUpperCase()==p1){
警报(“大写”)
}
else if(p1.toLowerCase()==p1){
警报(“是小写的”)
}
否则{
警惕(“两者的混合”);
}
}
写点东西
然而,它不起作用;Firefox Web控制台坚持认为“toUpperCase()”不是有效的方法。这里发生了什么事 在您的
onclick
中,您可以这样调用函数:caps(numero)
这不是作为字符串传递numero
。它将其作为变量名传递。未定义的.toUpperCase
是字符串
上的方法,在未定义
上不存在
相反,请尝试:caps('numero')
或者,如果您试图传递文本输入的值:
caps(document.getElementById('numero').value)
也许更好的是,将其纳入您的功能中:
function caps (id) {
var p1 = document.getElementById(id).value
if (p1.toUpperCase() == p1){
alert ("Is uppercase")
}
else if (p1.toLowerCase() == p1){
alert ("Is lowercase")
}
else {
alert ("Is mix of both");
}
}
通过这种方式,您可以像调用onclick=“caps('numero')”
一样调用它,传入输入的id
,该输入的值要大写
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function caps (p1)
{
console.log (p1); //see here
console.log (p1.value);
if (p1.value.toUpperCase() == p1.value){
alert ("Is uppercase")
}
else if (p1.value.toLowerCase() == p1.value){
alert ("Is lowercase")
}
else {
alert ("Is mix of both");
}
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Write something<br />
<input type="text" name="numero" id="numero" />
</label>
</p>
<p>
<input onclick="caps(numero)" type="submit" name="button" id="button" value="Submit" />
</p>
</form>
</body>
</html>
无标题文件
功能盖(p1)
{
console.log(p1);//请参见此处
console.log(p1.value);
if(p1.value.toUpperCase()==p1.value){
警报(“大写”)
}
else if(p1.value.toLowerCase()==p1.value){
警报(“是小写的”)
}
否则{
警惕(“两者的混合”);
}
}
写点东西
不是p1.toUpperCase()==p1
,p1代表input
dom元素,其中id=“p1”
没有touppercase
方法,只有字符串有此方法,所以应该使用p1.value
document.getElementById(p1)
等于p1
,p1
是id名称我认为您没有正确传递选择器。在这种情况下,您应该使用document.getElementsByName(“numero”),实际上,变量numero
将自动引用输入元素。我想您只是想传递numero.value
。当有疑问时,console.log(p1)
可以帮助您判断实际数据是什么。谢谢!成功了!我似乎严重误解了“弱类型”的含义(我是一个异教徒)。仅供参考,我意识到我在散布上面的错误信息。(稍后我将编辑答案)。您可以将numero
作为变量传递。DOM自动根据元素ID神奇地创建全局变量,因此说numero
大致相当于说document.getElementById('numero')
。不确定这是否是一个好的做法,或者是否有任何警告。如果只是为了清楚起见,我可能会选择更详细的方法。为什么我的答案没有用?