JavaScript toUpperCase()不起作用

时间:2014-07-03 03:19:22

标签: javascript

我正在尝试制作一个小脚本,用于确定输入的文本是完全大写,完全小写还是两者都不是。这里:

<!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>

然而,它不起作用; Firefox Web Console坚持认为“toUpperCase()”不是有效的方法。这里发生了什么事?

3 个答案:

答案 0 :(得分:1)

onclick中,您可以调用此函数:caps(numero)

这不会将numero作为String传递。它将它作为变量名传递。一个未定义的。 .toUpperCaseString上的一种方法,undefined上不存在。

相反,请尝试: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,其值为 UpperCase

答案 1 :(得分:0)

尝试这种方式,p1是输入元素而不是输入元素的值,因此与p1.value进行比较

<!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>

答案 2 :(得分:-1)

不是p1.toUpperCase() == p1,p1代表input dom元素,其中id =“p1”,

没有touppercase方法,只有字符串有此方法,所以你应该使用p1.value

document.getElementById(p1)等于p1p1是id名称