Javascript 两个jQuery函数不一起工作?

Javascript 两个jQuery函数不一起工作?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个函数,它可以将文本放入div中,而不管其长度如何 function fitin() { $('#fitin div').css('font-size', '1em'); while ($('#fitin div').height() > $('#fitin').height()) { $('#fitin div').css('font-size', (parseInt($('#fitin div').css('font-size')) - 1) + "px"); } }

我有一个函数,它可以将文本放入div中,而不管其长度如何

function fitin() {
$('#fitin div').css('font-size', '1em');

while ($('#fitin div').height() > $('#fitin').height()) {
  $('#fitin div').css('font-size', (parseInt($('#fitin div').css('font-size')) - 1) + "px");
}

}
它适用于最初用html编写的内容,但是当我使用函数替换文本时

function getVerse() {

var verses = ["this is one", "this is two"];
var index = 0;
var verse = "";
$("#button2").click(function() {

  $.getJSON("http://labs.bible.org/api/?passage=random&formatting=plain&type=json&callback=?", function(data) {
    verse = JSON.stringify(data[0].text);
      //alert(verse);
  });
  if (index >= verses.length) {
    index = 0;
  }
  $("#fitin").fadeOut(500, function() {
    $(this).html("<b>" + verse + "test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test" + "</b>").fadeIn(500);
    fitin();
    index++;
  });
});

}
函数getVerse(){ var verses=[“这是一个”,“这是两个”]; var指数=0; var-verse=“”; $(“#按钮2”)。单击(函数(){ $.getJSON(“http://labs.bible.org/api/?passage=random&formatting=plain&type=json&callback=?,函数(数据){ verse=JSON.stringify(数据[0].text); //警觉(诗句); }); 如果(索引>=相对长度){ 指数=0; } $(“#fitin”).fadeOut(500,function(){ $(this.html(“+verse+"测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试“+”).fadeIn(500); fitin(); 索引++; }); }); } fitin()不起作用。这里是指向的链接。

您的问题在这里:

(parseInt($('#fitin div').css('font-size'))
$('#fitin div').css('font-size'))
的结果是一个类似于
50px的字符串,它无法解析为int。要解决此问题,请执行以下操作:

$('#fitin div').css('font-size', (parseInt($('#fitin div').css('font-size').replace("px", "")) - 1) + "px");
如果字符串是一个带有“em”(2em)的数字,则更改为
replace(“em”,“em”)
。您遇到了一些问题

首先,当您更新诗句中的文本时,您没有替换其周围的
,因此
fitin()
中的选择器
$('#fitin div')
不再选择任何内容。已更改

$(this).html("<b>" + verse + "test ..." + "</b>").fadeIn(500);
致:

第三,您的字体大小更改代码无法正常工作,因为它依赖于从带有非数字字符的字符串中解析整数,因此我对其进行了一些修改以使其正常工作:

function fitin() {
    var initialSize = 16;
    do {
      $('#fitin div').css('font-size', initialSize + "px");
    } while (($('#fitin div').height() > $('#fitin').height()) && --initialSize)
}

在将数字更改为px的行尾应该有
+“px”
。在您执行
parseInt
并添加值之后,再添加像素。我将代码的总行放在一起。您还有另一个问题,在其他答案中提到。@Dhiraj答案。
fitin();
setTimeout(fitin, 0);
function fitin() {
    var initialSize = 16;
    do {
      $('#fitin div').css('font-size', initialSize + "px");
    } while (($('#fitin div').height() > $('#fitin').height()) && --initialSize)
}