جافا سكريبت الوصول anchor- إلى معرف على صفحة HTML أخرى

StackOverflow https://stackoverflow.com/questions/269566

  •  06-07-2019
  •  | 
  •  

سؤال

ولدي صفحات HTML اثنين، عند النقر على شيء على أتش تي أم أل الأول، وسوف تذهب إلى ثانية واحدة. ما أريد القيام به هو إظهار النص وفق ما قمت بالنقر على أتش تي أم أل الأول. واختتم نصوص مختلفة مع هويات مختلفة. وهنا كيف كتبت:

<a href="secondpage.html#one"></a>
<a href="secondpage.html#two"></a>
<a href="secondpage.html#three"></a>

وأنا أتوقع أن أرى two.html تحميل النص مع رقم "واحد"، لكنه لا يعمل، لا أحد يعرف ما فعلته خطأ؟

وهنا هو رمز على الصفحة الثانية:

<ul id="menu" class="aaa">
    <li><a id="one" href="#">one</a></li>
    <li><a id="two" href="#">two</a></li>
    <li><a id="three" href="#">three</a></li>
</ul>

ولدي ملف JS لتعديل كل معرف:

$("one").observe('click', function() {
    $('Pic').writeAttribute('src',"picone.jpg");
    $('Bio').update("texthere!");
});

ونفس لمدة سنتين وثلاثة.

والآن إذا كنت اضغط على زر على الصفحة الأولى، وسوف تظهر دائما النص والموافقة المسبقة عن علم ل"واحد"، بغض النظر عن الزر الذي كنت أنقر.

ولكن أريد أن أرى الموافقة المسبقة عن علم ونص "اثنين" إذا كنت فوق على ذلك.

هل كانت مفيدة؟

المحلول

وما تريد القيام به هو محاكاة النقر على مرساة الخاص بك عند تحميل الصفحة. منذ كنت تستخدم مسج، ونهج أبسط (ولكن شكل أفضل بكثير) سوف تكون على النحو التالي:

$(window).observe('domready', function () {
    $(location.hash).click();
});

ونعلق ondomready الحدث إلى النافذة. جلب عنصر مع معرف = واحد (مع مسج هذا من شأنه أن يكون "#one، نفس location.hash الخاص بك سيكون، مفيد جدا في هذه الحالة)، يؤدي النقر عليه.

وقد تحتاج إلى استبدال $ (location.hash). انقر ()؛ مع $ (location.hash). احصل على (0). انقر () منذ مسج تميل إلى العودة صفائف مسج الأجسام.

ولكن هل الحل الأفضل في حالتك أن يكون لديك معالج الحدث التي يمكنك تحريك يدويا، وبالتالي الالتفاف على الحاجة للأحداث إطلاق النار، كما aswell إسقاط المراسي وضعت عند _ النقر مباشرة على لى الخاص بك.

وعلاوة على ذلك، لماذا لا تقوم بتحميل الصفحة الثانية عند كل يبدو أنك تريد القيام به هو لإظهار المحتوى / اخفي حيوي؟ هل لأنها على نفس الصفحة ...

نصائح أخرى

وعلى #blastuffbla ليست ID ولكن تجزئة الموقع. يمكنك الق عليه باستخدام:

self.document.location.hash

والذي سيعود #hash، إذا كنت تريد فقط تجزئة ستستخدم:

self.document.location.hash.substring(1)

ويساعد هذا الأمل

وعلامات لم يكن لديك معرف ولكن أسماء للتعامل مع المراسي في عناوين المواقع، فإنك لا تزال في حاجة إلى ID لإدارتها في JS بالرغم من ذلك. لذلك يجب أن تكون قائمتك:

<ul id="menu" class="aaa">
<li><a id="one" name="one" href="#">one</a></li>
<li><a id="two" name="two" href="#">two</a></li>
<li><a id="three" name="three" href="#">three</a></li></ul>

ويبدو جافا سكريبت الصحيح بالرغم من ذلك.

وعندما تقول "هويات مختلفة" كيف حالك إنشاء المراسي الخاصة بك على صفحة 2ND؟ مرساة على الصفحة 2ND ينبغي أن تبدو هذه:

<a name='one'></a>

ووضع هذا الحق فوق النص الذي تريد وضع علامة على الصفحة 2ND.

هل تريد تمرير الصفحة إلى positon من "واحد" هوية؟ ربما محتوى الصفحة صغير جدا ان كنت غير قادر على تمرير هناك. أعني أحيانا المتصفح غير قادر على تحريك العنصر ملحوظ مع هوية إلى الجزء العلوي من قماش ويبدو أنه doenst تمريره هناك. في محاولة لتشمل مساحة كافية بعد العنصر لجعله للتمرير إلى أعلى المتصفح.

وعلى أمل أن يساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top