js 命名空间里拿不到元素对象

Chance_ 发布于 2014/02/26 18:00
阅读 284
收藏 0

这是代码:alert(element);不知道为什么输出为null,求解决

<script type="text/javascript">
	(function(){
		if(!window['CA']){window['CA'] = {} }

		function $(){
			var elements = new Array();
			for(var i=0;i<arguments.length;i++){
				var element = arguments[i];
				if(typeof element == 'string'){
					alert(arguments[0]);
					element = document.getElementById(element);
					alert(element);
				}
				if(arguments.length == 1){
					return element;
				}
				elements.push(element);
			}
			return elements;
		};
		window['CA']['$'] = $;
	})()
	var name = CA.$('name');
  </script>
 </head>
 <body>
 <input type="text" id="name" value="zhangsan"/>



加载中
0
子木007
子木007
把 <input>放到 script 前面
子木007
子木007
回复 @朴宝英 : 无非就那么几个影响的因素, 不如弄到 runjs 里面,会有更多人愿意去看。
Chance_
Chance_
非常感谢,还能帮忙看看下一楼提出来的两个问题吗,谢谢
0
ththththht
ththththht
window.onload
ththththht
ththththht
回复 @朴宝英 : 1,jquery拿到的是空对象吧。你alert它的值看看。alert( name.val() ); 2,我试了把改成外部引入,可以获取。你是不是代码写错了。
Chance_
Chance_
非常感谢。还有2个问题: 1. 如果23行换作是jquery的var name = $("#name");为什么能拿到元素对象,这里就不行呢? 2. 后来我把第2行-22行提取出来作为外部js引入,onload方法里还是写var name = CA.$('name');报了个错:CA is not defined,为什么找不到CA的命名空间哈? 再次感谢!
0
掬一捧
掬一捧
您的<script>的位置放错了,应该放在</body>前面。
Chance_
Chance_
这....
0
jacky-zhuo
jacky-zhuo
js加载执行的时候, <input id="name" />还没被加载, 页面不存在这个input, 获取就是null了
Chance_
Chance_
回复 @mr-zhuo : 我知道了,谢谢
jacky-zhuo
jacky-zhuo
回复 @朴宝英 : 直接改成$("#name");应该还是拿不到的 是因为写jq的时候会 $(function () { $("#name"); }); 就是在页面加载完后再执行了
Chance_
Chance_
恩恩,为什么Jquery不用等待页面加载完毕就能拿到对象呢?
0
ththththht
ththththht
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="temp.js"></script>
<script type="text/javascript">
window.onload = function (){
    var name = CA.$('name');
   alert(name.value);
}
</script>
</head>
<body>
<input type="text" id="name" value="zhangsan"/>



火狐没问题。
Chance_
Chance_
是我疏忽了,3Q
返回顶部
顶部