Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getElementByID_Javascript_Codeigniter_Getelementbyid - Fatal编程技术网

Javascript getElementByID

Javascript getElementByID,javascript,codeigniter,getelementbyid,Javascript,Codeigniter,Getelementbyid,我正在使用CodeIgniter 2.0,我想用Javascript更改div的内容,但我似乎无法获得它。下面是一个精简版来演示我的问题: 我的控制器: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Index extends CI_Controller { function __construct() { parent::__constr

我正在使用CodeIgniter 2.0,我想用Javascript更改div的内容,但我似乎无法获得它。下面是一个精简版来演示我的问题:

我的控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 class Index extends CI_Controller {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->load->view('index.php');
    }
}
/* End of file index.php */
/* Location: ./application/controllers/index.php */
我的看法是:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title><?php echo $this->config->item('app_name'); ?> : Welcome!</title>    
<script type="text/javascript">   

function returnObjById( id )
{
    if (document.getElementById)
        var returnVar = document.getElementById(id);
    else if (document.all)
        var returnVar = document.all[id];
    else if (document.layers)
        var returnVar = document.layers[id];
    return returnVar;
}

alert('fetching moonstarttime : ' + returnObjById('moonstarttime')  );

</script>
</head>
<body>

<div id="moonstarttime" name="moonstarttime" >I want this</div> 

</body>
</html>

但是当页面加载时,我总是获取moonstarttime:null。我在Chrome和IE中都试过了,我做错了什么?

javascript在节点加载之前执行

javascript在节点加载之前执行

window.onload = function(){
 function returnObjById( id )
 {
    if (document.getElementById)
        var returnVar = document.getElementById(id);
    else if (document.all)
        var returnVar = document.all[id];
    else if (document.layers)
        var returnVar = document.layers[id];
    return returnVar;
 }
 alert('fetching moonstarttime : ' + returnObjById('moonstarttime')  );
}
或者在关闭body标记之前,将脚本按原样放置在out assing window.onload中


或者在关闭正文标记之前,将脚本按原样放置在out assing window.onload中。

您正在页面标题中运行脚本,因此它会在正文加载之前运行。您无法访问该元素,因为它尚不存在


将脚本放在元素之后,或将其放在函数中,然后从正文的onload事件调用函数。

您正在页面标题中运行脚本,因此它在正文加载之前运行。您无法访问该元素,因为它尚不存在


将脚本放在元素之后,或者将其放在函数中,从主体的onload事件调用函数。

我认为发生的情况是,您试图在DOM完全加载之前检索元素。请注意,选择元素的代码在您要获取的项之前。如果您在有问题的元素之后运行代码,您应该获得对该元素的引用


另一方面,javascript库(如really)可以帮助您完成这项工作,并具有一个helper函数ready,确保只有在加载页面和初始化DOM之后才能执行代码

我认为发生的情况是,您试图在DOM完全加载之前检索元素。请注意,选择元素的代码在您想要获取的项目之前。如果您在有问题的元素之后运行代码,您应该获得对该元素的引用


另一方面,javascript库(如really)可以帮助您完成这项工作,并具有一个helper函数ready,确保只有在加载页面和初始化DOM之后才能执行代码

正如其他人提到的,您的函数是在构建DOM树之前运行的

如果您不想等待onload函数,例如,如果您加载了大量图像,它可能会等待很长时间,那么您可以在此处使用注释5,这可能会加快页面的明显响应速度

如果你把你的代码放在元素后面,并加上一个延迟,你也可以。 因此,您可以使用setTimeout,如下所述: ,并有类似于:

setTimeoutfunction returnObjectByIdname{…},30


这将延迟函数运行30毫秒。

正如其他人提到的,您的函数在构建DOM树之前运行

如果您不想等待onload函数,例如,如果您加载了大量图像,它可能会等待很长时间,那么您可以在此处使用注释5,这可能会加快页面的明显响应速度

如果你把你的代码放在元素后面,并加上一个延迟,你也可以。 因此,您可以使用setTimeout,如下所述: ,并有类似于:

setTimeoutfunction returnObjectByIdname{…},30


这将延迟函数运行30毫秒。

我建议使用jQuery。它将消除对if..elseif的需要,以及不必测试所有类型的浏览器功能的需要

在jQuery中:

只需拨打以下电话:

<script type="text/javascript">
  $(document).ready(function () {

     alert('fetching moonstarttime : ' + $('#moonstarttime')  );

  }
</script>

我建议使用jQuery。它将消除对if..elseif的需要,以及不必测试所有类型的浏览器功能的需要

在jQuery中:

只需拨打以下电话:

<script type="text/javascript">
  $(document).ready(function () {

     alert('fetching moonstarttime : ' + $('#moonstarttime')  );

  }
</script>

谢谢,我没有意识到Javascript支持嵌套functions@rlb.usa:是的,但与问题无关。您只需要在onload处理程序中或在元素之后调用returnObjById函数的代码,如果愿意,您可以将returnObjById函数保留在原来的位置。谢谢,我没有意识到Javascript支持嵌套functions@rlb.usa:是的,但与问题无关。您只需要在onload处理程序中或在元素之后调用returnObjById函数的代码,如果愿意,可以将returnObjById函数保留在原来的位置。