老师我这么写为什么不行呢

老师我这么写为什么不行呢

function b(a){

var c=a.split(" ");

var y=new Array();

var q;

for(var i=0;i<a.length;i++){

q=c[i];

var p=q.toUpperCase();

var t=p.slice(0,1);

var o=t.concat(q.slice(1));

y.push(o);

}

return document.write(y);

}

b("all time is to time when it is past");

这是返回的问题!是什么意思 Cannot read property 'toUpperCase' of undefined

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

你好同学 , 根据最后一次上传的代码 ,效果实现了 . 同学对反复修改优化多次 , 能够看到出来 ,同学很善于思考 , 并且有独立解决问题的能力 . 这一点是一个优秀的开发工程师应该具备的能力 . 相信同学在解决问题的过程中自己也会有所提升 , 收获满满 . 也希望同学在未来的学习中 , 继续不断的锻炼提升自己的能力 , 加油 !

祝学习愉快 !

提问者 小白00000000000痴 2018-12-16 21:37:35
<script type="text/javascript">
		
		function b(a){
		var a="all time is to time when it is past";/*可以改为prompt*/
			var c=a.split(" "),y=new Array();
			;
			for(var i=0;i<c.length;i++){
				y.push(c[i].slice(0,1).toUpperCase().concat(c[i].slice(1)));
			}
			document.write(y.join(" ")+"<br>");
		}
		b();
    </script>


提问者 小白00000000000痴 2018-12-16 21:15:37

<script type="text/javascript">

var a="all time is to time when it is past";/*预先知道要转换的字符串,放进函数也可以,但是我觉得没必要!*/

function b(a){

/*var a=prompt("请输入需要转换首字母的字符串!");*//*预先不知道要转换的字符串,全部封装,调用函数时不传参数*/

var c=a.split(" ");/*讲字符串分割转换分割成数组*/

var y=new Array();/*新建数组,用于保存转换首字母后的的字符串*/

for(var i=0;i<c.length;i++){

var t=c[i];/*接受数组的每一项*/

var u=t.slice(0,1).toUpperCase();/*将每一个数组项的字符串的首字母截取出来,并转换为大写*/

var o=u.concat(t.slice(1));/*链接首字母数组项的剩余字符!*/

y.push(o);/*把首字母转换好的数组项压入新的数组*/

}

var z=y.join(" ");/*将转换完成的数字转换为字符串用空格隔开*/

document.write(z+"<br>");/*输出字符串*/

}

b(a);/*调用函数*/

    </script>

刚才发错了!找到原因了!我挨个排查之后!发现是因为a.length的原因!循环给的i<a.length是字符串的长度是三十五!而遍历数组的话!数组的长度是九!九次之后UpperCase找不到了!因为九次之后变量t全是undefined!所以老是报错!

  • 提问者 小白00000000000痴 #1
    老师!这个过程能叫优化吗? function b(a){ var a="all time is to time when it is past";/*可以改为prompt*/ var c=a.split(" "); var y=new Array(); for(var i=0;i<c.length;i++){ y.push(c[i].slice(0,1).toUpperCase().concat(c[i].slice(1))); } document.write(y.join(" ")+"<br>"); } b(); 还能不能继续以最少的代码!达到效果啊
    2018-12-16 21:28:57
提问者 小白00000000000痴 2018-12-16 21:08:07

      var input=prompt('请输入手机号'),

          input1=input.slice(7),//截取号码后4位

          input2='*******',//声明新字符串为相应个数的*(原字符串个数-截取后的字符串个数,)

          input3=input2+input1;//拼接后的字符串与初始字符串个数相等

      document.write(input3);//拼接后将新字符串输出在页面上


      可以了老师找到原因了!


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师