2017-06-07 79 views
0

要求已经回答的问题抱歉。我试图解决这个问题,但我无法得到这个工作(可能是因为我不是一个JavaScript的家伙,它使我感到困惑。)如何动态更改动态div的div文本

我想改变从js库动态生成的div的文本我正在使用显示错误消息。

我试图通过它的类象

$('document').ready(function() { 
    $('.error-message')[item_number].innerText.replace('old string','new string'); 
} 

我已经试过检查,如果该元素是未定义改变使用jQuery的元素,把一个条件为,也试图用简单的JavaScript。但我认为问题不在于此,而是因为此功能在js控制台中运行,因此该功能并未动态运行并且随时更改值。

如果有人回答我需要学习和使用的东西,我将不胜感激。我不认为这需要ajax,我应该能够通过纯js​​或jquery做到这一点。但请让我知道,如果我需要深入研究Ajax来处理这个问题。

请注意,我可以根据需要更改js控制台中的文本。它只是我无法处理这个在飞行中,因为我试图改变的div也在飞行中产生。

+1

而不是'.innerText',请尝试使用'的.text()'。 – doutriforce

+0

字符串'replace()'方法不会更改原始字符串,它会返回一个新字符串。 –

+1

当你试图改变它时,DOM中的文本是?如果它的动态并没有加载,你将需要等待文本出现之前,试图操纵它。 –

回答

1

由于您使用的是jQuery--这应该适合您。

$('document').ready(function() { 
    $('.error-message')[item_number].text('new string'); 
} 
0

香草的js代码如下:

document.getElementsByClassName("error-message")[item_number].innerHTML = "something else here" 
0

解决方案

$(function() 
 
{ 
 
    $('.add_div').click(function(event) 
 
    { 
 
    // Dynamically add div 
 
    var $new_div = $('<div class="new_div"/>').text('default text'); 
 

 
    // Prepend so you don't have to scroll to see the div update 
 
    $('.div_container').prepend($new_div); 
 
    flash_first_div(); 
 
    }); 
 

 
    $('.update_text').click(function(event) 
 
    { 
 
    var date = new Date(), 
 
     hour = date.getHours(), 
 
     minutes = date.getMinutes(), 
 
     seconds = date.getSeconds(); 
 

 
    // UPDATE LAST DYNAMICALLY CREATED DIV 
 
    $('.new_div').first().text('text updated at ' + hour + ':' + minutes + ':' + seconds); 
 
    flash_first_div(); 
 
    }); 
 
    
 
    // Just a helper function to highlight the targeted div 
 
    function flash_first_div() 
 
    { 
 
    var $last_div = $('.new_div').first(); 
 
    
 
    $last_div.addClass('flash'); 
 

 
    window.setTimeout(function(){$last_div.removeClass('flash');},500); 
 
    }; 
 
});
button{font-size:16px} 
 
div{transition: background 1s;margin-bottom:10px} 
 
.new_div{padding:0.5em;border:1px solid #000000} 
 
.flash{background:yellow}
<!DOCTYPE html> 
 
<html> 
 
<body> 
 
<div id='buttons'> 
 
    <button class='add_div'>Add Div</button> 
 
    <button class='update_text'>Update text of last created div</button> 
 
</div> 
 
<div class='div_container'></div> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
</body> 
 
</html>