首页技术getelementbyid获取不到元素(element元素)

getelementbyid获取不到元素(element元素)

编程之家2026-07-01984次浏览

大家好,今天来为大家解答getelementbyid获取不到元素这个问题的一些问题点,包括element元素也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

getelementbyid获取不到元素(element元素)

请问一下document.getElementById().innerText的用法

document.getElementById("")得到的是一个对象,用 alert显示得到的是

“ object”,而不是具体的值,它有 value和 length等属性,加上.value得到的才

是具体的值!

参考资料:

1. document. getElementById的用法和 DHTML.CHM的下载地址

今天在网络上查找 document. getElementById的用法,如下:

getelementbyid获取不到元素(element元素)

A:语法:

oElement= document. getElementById( sID)

参数:

sID:必选项。字符串(String)。

返回值:

oElement:对象(Element)。

getelementbyid获取不到元素(element元素)

说明:

根据指定的 id属性值得到对象。返回 id属性值等于 sID的第一个对象的引用。假如对应的为一组对象,则返回该组对象中的第一个。

如果无符合条件的对象,则返回 null。

B:有一个例子可以很好的说明:

****************************************************************************

**

*这个函数中最关键的地方是 document.getElementById,他是什么呢?*

**

*关于 document.getElementById,是这样的:*

**

*如: document.getElementById('hdrPageHeader_lblTitle')*

**

*表示的意思是:获取 ID为:hdrPageHeader_lblTitle的对象*

**

*<a>aa</a>*

*<a>bb</a>*

*<a>cc</a>*

*<script language="javascript">*

*<!--*

* var idtext=document.getElementById('hdrPageHeader_lblTitle')*

* alert(idtext.innerText)*

*//-->*

*</script>*

C:另外还得到一个细节:

① document.getElementById有时会抓 name放过了 id,据说是 IE的一个 BUG;

页面中有

<input type="hidden" value="2"/>

<select>

一个是一个是

用 document.getElementById取第二个,可是,取到的却是第一个>

在 IE中 getElementById竟然不是先抓 id而是先找 name相同的物件...

两个 form,每个 form有两个 textbox,两个 form中的 textbox是相同的 name,但 id都不同...

这样在 Firefox是没问题的...但在 IE却只抓得到第一个出现的 name资料

2. document对象

属性: title; bgColor; url;(使用: document.title)

方法:

focus

使得元素得到焦点并执行由 onfocus事件指定的代码。

getElementById

获取对 ID标签属性为指定值的第一个对象的引用。

getElementsByName

根据 NAME标签属性的值获取对象的集合。

getElementsByTagName

获取基于指定元素名称的对象集合。

方法:

focus

使得元素得到焦点并执行由 onfocus事件指定的代码。

getElementById

获取对 ID标签属性为指定值的第一个对象的引用。

getElementsByName

根据 NAME标签属性的值获取对象的集合。

getElementsByTagName

获取基于指定元素名称的对象集合。

document.getElementById不用管它在哪个form里

Android开发中getViewById为什么返回null

一,调用顺序不当导致的异常

持这种观点的主要原因是getViewById的调用放到了setContentView之前,如下:

super.onCreate(savedInstanceState);

mTrueButton=(Button)getViewById(R.id.true_button);

setContentView(R.layout.activity_quiz);

理由是:当activity调用 setContentView()时,android才会去绘制 layout上的各个元素,并为其分配内存。只有分配了内存以后,才能继续执行,findViewById();才能得到引用,不然得到空引用,空引用意味着,后面使用相应变量时就会发生访问的对象不存在的问题。

而且当Activity重新setContentView()以后,那些之前绘制的控件,内存都被灭掉了。

所以,若是通过setContentView来达到画面切换目的的,要注意重新绘制以后重新取得引用

二,getViewById的上下文对象不匹配

这种方式让笔者想到Javascript中的document.getElementById,两者具有非常高的相似性,getElementById的调用需要指定对应的document对象,表示从该document对象获取元素,同理,Android中的getViewById的完整调用是View.getViewById,因此需要关注该方法默认的context对象,一般是this,即当前的Activity,但有时候可能不是这样,如:

userDialog=new Dialog(addevent.this);

userDialog.setContentView(R.layout.user_list);

userDialog.setTitle("请选择");

ListView lv=(ListView)userDialog.findViewById(R.id.userList);

lv.setAdapter(new MyAdapter());

userDialog.show();

如上,实例化lv时必须指定userDialog.findViewById()而不能直接findViewById(),否则就会从Activity而不是Dialog的布局文件中找R.id.userList,此时当然会返回null,执行lv.setAdapter(new MyAdapter());时就会出现NullPointException异常

三,开发工具Eclipse导致的问题

假定在自定的Adapter的getView方法中有类似如下的代码:

View rowview=(View)inflater.inflate(R.layout.rowview, parent, false);

TextView tv_contact_id=(TextView)rowview.findViewById(R.id.tv_contact_id);

TextView tv_contactname=(TextView)rowview.findViewById(R.id.tv_contactname);

有时候居然也会发现rowview非空,但tv_contact_id和tv_contactname都是null!仔细看代码,怎么也看不出错误来。到底是什么原因造成的呢?答案是Eclipse造成的,要解决这个问题,需要这个项目clean一次(Project菜单-> Clean子菜单),这样就OK了。

四,新版本SDK不能在onCreate方法中调用了。

重要的环境交代:刚学Android,在官网下载的新版的ADT以及新版的SDK在新版的IDE(ADT)创建项目时如果你的最小版本(minimumrequiredSDK)要支持4.0以下版,并且目标版本为(4.0+),那么此时IDE会为你创建一个兼容包(appcompat_v7)创建项目后,这个时候在生成的项目主Activity不是以前的那种继承的Activity,而是继承的ActionBarActivity。

此时,如果你仍然用旧的办法在onCreate调用getViewById,那么会返回null,原因是:在新的layout文件不是存放在默认的(res/layout/activity_quiz.xml)文件中,而是存放在(res/layout/fragment_quiz.xml)文件中。所以要在fragment_quiz.xml去找对应的ID才会找到,而新的IDE生成的代码中加载(fragment_quiz.xml)文件是在一个内部类加载的,所以一种方法是:我们可以在内部类加载处来得到Button。

/**

* A placeholder fragment containing a simple view.

*/

public static class PlaceholderFragment extends Fragment{

View rootView= null;

public PlaceholderFragment(){

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState){

rootView= inflater.inflate(R.layout.fragment_quiz, container, false);

mTrueButton=(Button) rootView.findViewById(R.id.true_button);

System.out.println(button);

return rootView;

}

}

另外一种方法是:如果熟悉Activity的生命周期的人可以知道:onCreate调用的时候其实还没构造对应的布局对象,因此不能在onCreate函数中获取控件,但可以在onStart函数中获取

@Override

protected void onStart(){

super.onStart();

mTrueButton=(Button)findViewById(R.id.true_button);

mTrueButton.setOnClickListener(new android.view.View.OnClickListener(){

public void onClick(android.view.View v){

//TODO...

}

});

}

.vue组件中获取DOM元素问题

一、问题引入

原项目把一块内容直接写在了模块中(浏览器显示的一整个页面),现在想把它提成一个单独组件,而且把其中使用 document.getElementById('id')改为 ref获取元素的形式。

单独创建一个.vue组件,通过绑定传值,触发页面变化从而触发 beforeUpdate。

然后发现 beforeUpdate()中根本获取不到此元素,用原生js获取也不行。

三、解决

1、 beforeUpdate()生命周期函数中,在获取元素语句外套用 this.$nextTick(function(){...})。( mounted无效,原因待查明)

官方解释:将回调延迟到下次 DOM更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM更新。即DOM真正加载完成。

如果你还想了解更多这方面的信息,记得收藏关注本站。

php文件后缀名,php文件怎么播放手机c语言编译器 csdn手机版