Javascript 使用其他类中的文本更改div类中的文本

Javascript 使用其他类中的文本更改div类中的文本,javascript,jquery,Javascript,Jquery,我试图用单词“make by”加上“companyName”来更改div类“instock”中的文本 另外,由于可能并不总是需要这样做(当没有可更改的公司名称时),我想我需要先检查span类是否在那里。您在中缺少一个“。行: var companyName = document.getElementsByClassName('companyName'); 返回HTMLCollection。将其更改为: var companyName = document.getElementsByClassN

我试图用单词“make by”加上“companyName”来更改div类“instock”中的文本

另外,由于可能并不总是需要这样做(当没有可更改的公司名称时),我想我需要先检查span类是否在那里。

您在
中缺少一个
。行:

var companyName = document.getElementsByClassName('companyName');
返回
HTMLCollection
。将其更改为:

var companyName = document.getElementsByClassName('companyName')[0];
var companyName = document.querySelector('.companyName');
如果您使用的是jQuery,请使用:

var companyName = $('.companyName');
var companyNameText = companyName.text();
var instock = $('.instock');
var instockAlt = instock.text();
instockAlt.text('Made by' + companyNameText);
原因是,
textContent
并非到处都可用,而一些浏览器使用
innerText
。jQuery会处理类似这样的浏览器不兼容问题

另外,最后的代码是
而不是

如果整个代码是一个节块,则需要使用上下文方式:

$(函数(){
$('.instock')。每个(函数(){
if($(this).prev('.description').find('span').length)
$(this).text('由'+$(this).prev('.description').find('span').text()生成);
});
});

公司名称
手工定做

使用jQuery,您可以执行以下操作:

$('.instock').html(function() {
  if ( $(this).prev('.description').find('span').length ) return 'Made by ' + $(this).prev('.description').find('span').html()
})

使用JQuery,您可以执行以下操作

var companyName = $('.companyName').text();
if(companyName){
  $('.instock').html('Made by ' + companyName);
}

我希望OP没有超过一个companyname/instock组可供使用,因为这将失败。它运行良好,我发现它最容易理解。我尝试了j08691的答案,该答案同样有效,但如果在companyname之前有另一个跨度,则不会。我只在需要对单个instock类执行此操作时使用companyname跨度。Thanks向所有人寻求答案。@Pete“但如果我在companyName之前还有一个span,那就不行了”那么,为什么在这个世界上有人会认为你有这个span,而你从来没有提到过它,而且它不在你的例子中?我们必须根据你提供的信息来回答——而不是无限的可能性。
var companyName = $('.companyName');
var companyNameText = companyName.text();
var instock = $('.instock');
var instockAlt = instock.text();
instockAlt.text('Made by' + companyNameText);
$('.instock').html(function() {
  if ( $(this).prev('.description').find('span').length ) return 'Made by ' + $(this).prev('.description').find('span').html()
})
var companyName = $('.companyName').text();
if(companyName){
  $('.instock').html('Made by ' + companyName);
}