为什么我不能在选择器上设置innerHTML?

时间:2017-02-22 19:15:32

标签: jquery dom

在包含此页面的页面上:

document.getElementById("myMessage").innerHTML = "New text!";

以下内容将成功更改显示的文字:

div

但使用$("myMessage").innerHTML = "This text will not appear!"; 的选择器不会:

$ranges = array(
    60 => array("range"=>"00:00-00:59", "count"=>0),
    120 => array("range"=>"01:00-01:59", "count"=>0),
    180 => array("range"=>"02:00-02:59", "count"=>0),
    // etc
    1440 => array("range"=>"23:00-23:59", "count"=>0),
);
foreach ($registrations as $reg) {
    $t = explode(":", $reg["registration_time"]);
    // turn HH:MM into minutes
    $minutes = ($t[0] * 60) + $t[1];
    // round to the nearest 60
    $minutes = ceil($minutes / 60) * 60;
    $ranges[$minutes]["count"] += $reg["count"];
}

foreach ($ranges as $range) {
    $output[$range["range"]] = $range["count"];
}
print_r($output);

为什么?

4 个答案:

答案 0 :(得分:6)

您在Sizzle查询中缺少ID选择器。但是,您正在尝试访问jQuery对象的DOM属性,这将无法正常工作。

您应该使用text()html()

.innerHTML

如果您希望使用get(),可以使用document.getElementById(),但这似乎毫无意义,因为您也可以使用$('#myMessage').get(0).innerHTML = 'This text will not appear!'; // or $('#myMessage')[0].innerHTML = 'This text will not appear!'; ......

prop()

最后,您还可以使用$('#myMessage').prop('innerHTML', 'This text will not appear!'); ,如下所示:

DATE        Fruit
1st          Orange
2nd          apple
3rd          apple

答案 1 :(得分:2)

试试这个:

$("#myMessage").html("This text will appear!");

答案 2 :(得分:0)

在jQuery中,您只需使用.html()即可。您的选择器也缺少# ID。



$(function() {
  $("#myMessage").html("This text will not appear!");
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myMessage">Text to change</div>
&#13;
&#13;
&#13;

答案 3 :(得分:-1)

如果你想使用innerHTML,那么从jquery 1.6开始,你可以使用prop()方法

&#13;
&#13;
$("#myMessage").prop('innerHTML', 'This text will not appear!');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
<div id="myMessage">Text to change</div>
&#13;
&#13;
&#13;