0

それで、

インラインタグを使用して動作するように@bazmegakapaのスクリプト(ここで説明)を適応させることに取り組んでいます:

<script type="javascript">
var p=$('#fos p');
var divh=$('#fos').height();
while ($(p).outerHeight()>divh) {
$(p).text(function (index, text) {
    return text.replace(/\W*\s(\S)*$/, '...');
});
}
</script>

コード(このJsFiddleでコメントアウトしました)は、タグ内に配置されるまでうまく機能します。故障の原因となる可能性のあるものについて何かアイデアはありますか?@bazmegakapaのスクリプトは素晴らしいと思います。これは主に、他の省略記号プラグインよりもはるかに短く、管理しやすいためです。このハードルを乗り越えて、実際にプロジェクトに実装する方法を見つけたいと思います。私はまだJavaScriptの初心者なので、SOの人たちの助けがあれば素晴らしいと思います。

-Marcatectura

4

1 に答える 1

0

私が何かを見逃していない限り、それはあなたがフィドルで行われることをどのように期待しているかのせいであると私はほぼ確信しています。現在、フィドルのJavascriptを実行する必要がありますonLoad。これは、その時点でDOMの準備ができていることを意味します。インラインJavascriptの場合、対象となる要素のにHTMLで印刷されています。HTMLは上から下に解析されるため、要素が認識される前にスクリプトが実行されます。まだ「存在しない」ものを操作しようとすると、機能しません。したがって、インラインスクリプトをメインHTMLの下に配置するか、次のようなものを使用する必要があります。

$(document).ready(function () {
    // Your code here
});

ページのどこでも。

ブラウザのコンソールをチェックするのに役立つかもしれませんが、要素が見つからない場合はjQueryが爆撃しないため、状況が失敗しなかった可能性があります-おそらく未定義などの正しいものを返すだけなので、他のロジックはおそらく失敗するでしょう...爆弾ではありません。「asdf」document.getElementById("asdf").valueの要素がない場合に試行すると、Javascriptが爆破します。idしかし、使用した場合は爆撃されません$("#asdf").val()-未定義か何かが返されるだけです。

pクイックノート:のようにラップする必要はありません$(p)-すでにjQueryオブジェクトであるため、プレーンでjQueryメソッドを呼び出すことができますp

アップデート:

<script>問題は、タグが「javascript」だけでなく「text/javascript」タイプである必要があるという事実にあるように思われました。これがあなたの作業コードを持っているフィドルです:

http://jsfiddle.net/Z47CX/3/

于 2012-10-28T05:54:37.733 に答える