Как изменить атрибут title в теге <a>с помощью JavaScript?

У меня есть тег html, в котором я хочу, чтобы имя подсказки было указано в атрибуте title. После того, как я нажму ссылку, мне нужно другое название подсказки. Я использовал приведенный ниже код, но он не работает. Кто-нибудь может мне помочь, пожалуйста!

<html>
<head>
<script>

function tool(){
document.getElementsByName(link).title = "after click";
}

</script>
</head>
<body>
    <a href="javascript:tool()" name ="link" title="before click">click here</a>
</body>
</html>

Ответ 1

Я предполагаю, что это просто упрощенный пример того, что вы хотите сделать, поскольку изменение ссылки onclick можно выполнить inline:

 <a href="#" onclick="this.title='after click'" title="before click">...</a>

В любом случае лучше всего избегать любых поисков. Просто передайте ссылку на вашу ссылку в качестве параметра вашей функции:

<script>
  function tool(link) {
    link.title = 'after click';
  }
</script>
<a href="#" onclick="tool(this)" title="before click">...</a>

Естественно, как предлагает Грант, вы также можете передать значение названия функции, но тогда вам действительно лучше всего делать встроенную версию и пропускать эту функцию.

Ответ 2

Избавьтесь от тега BR внутри вашего элемента SCRIPT и перепишите функцию инструмента:

function tool(){
    document.getElementsByName("link")[0].title = "after click";
}

и он будет работать. Однако это не оптимальный способ. Если вы назначаете параметр id в поле, вы можете хотя бы использовать document.getElementById(..) или даже лучше использовать библиотеку, например, jQuery.

Ответ 3

Используя jquery, вы можете написать следующую команду:

$("a#link").attr("title","after click");

Ответ 4

document.getElementsByName("link").title = "after click";

Ответ 5

Вы можете использовать setAttribute (attributeName, value) для элемента, который вы хотите изменить.

document.getElementById('link').setAttribute('title', 'after click');

Это также работает для пользовательских атрибутов

Ответ 6

Исправление кода Jason:

write document.getElementById( "ссылка" ). title вместо document.getElementsByName( "ссылка" ). title.

Я тестировал его на IE7 и Firefox 3.

<html>
<head>
    <script>
            function tool(){
                    document.getElementById("link").title = "after click";
            }
    </script>
</head>
<body>
    <a href="javascript:tool()" id="link" title="before click">
            click here
    </a>
</body>
</html> 

Вы также можете изучить эту статью для создания хорошей всплывающей подсказки с помощью javascript: http://devirtu.com/2008/08/14/how-to-make-tooltip-with-javascript/

Ответ 7

Я бы использовал http://jquery.com/ загрузить его и добавить ссылку script на него

Дайте тегу идентификатор, например myLink

Затем, используя JQuery, вы можете написать

$(document).ready(function () {

    $("#myLink").click(function(){

        $("#myLink").attr("title","after click");

    });

});

Ответ 8

Как показывает воск, лучше использовать getElementById()

<a id="aLink" href="http://www.bla.com" title="hello">link</a>
 <script>

function tool(){
document.getElementById('aLink').title = "after click";
}

</script>

Ответ 9

В вашем поставляемом коде две ошибки:

  • Как следует из названия, documentent.getElementById ищет вещи по идентификатору, а не по имени. Вам нужно будет указать идентификатор в теге привязки. Измените ссылку на <a href="javascript:tool()" id="link" name="link" title="before click">click here</a>

  • Вы загружаете documentent.getElementById содержимое переменной, называемой "ссылка", которая, по-видимому, не существует. Вы действительно хотели передать литеральную строку, которой нужны кавычки. Измените этот вызов на document.getElementById("link").title = "after click";

Объединяя все вместе, вот как выглядит ваш код:

<html>
<head>
    <script>
        function tool(){
            document.getElementById("link").title = "after click";
        }
    </script>
</head>
<body>
    <a href="javascript:tool()" id="link" name="link" title="before click">
        click here
    </a>
</body>
</html>

Ответ 10

<html>
<head>
<script>
window.onload = function () {
    window.document.getElementById("link").onclick = function () {
        this.title = "after click";
        return false;
    };
};
</script>
</head>
<body>
    <a href="http://www.example.com" id="link" title="before click">Click Here</a>
</body>
</html>

Ответ 11

Я занимаюсь двумя вопросами здесь:

  • Название изменяется при наведении указателя мыши, но не в коде:
    ...
    < a class= "a" href= "#" name= "home" title= "Главная" > Главная страница ...
    document.getElementsByName( "home" ) [0].title= "Название изменено";//за работой

  • Как изменить класс ссылки:

    FROM: < a class= "a" href= "#" name= "home" title= "Главная" > Главная страница TO: < a class= "current" href= "#" name= "home" title= "Главная" > Главная
    document.getElementsByName( "home" ) [0].class= "current";//не работает

    Спасибо!

Ответ 12

Название изменилось, но только в сгенерированном коде. Так работает JS - он работает только с презентацией. Попробуйте использовать панель инструментов Webdeveloper для Firefox, поскольку она имеет возможность показывать сгенерированный код вместе с оригинальным. Если вам нужен какой-либо другой способ, подумайте об использовании программирования на стороне сервера.

Мои наблюдения:

  • Никогда не смешивайте JS с HTML. Если вам нужно обновить свой код, это будет намного проще - найдите "ненавязчивый JS", чтобы лучше понять проблему. <a href="javascript:..."> или <a href="#" onclick="...">, следовательно, является плохой практикой кодирования.

  • Не используйте большие JS-пакеты, такие как JQuery, для простых задач. Они хороши только при полном их использовании.

  • Вам действительно нужно выполнять манипуляции с HTML "на лету" и почему? Является ли подсказка заголовка важной для вашего кода? Кто должен извлечь выгоду из этого: конечные пользователи или администратор? Как насчет доступности?

  • INFO на первом кодовом блоке:

  • Если мы не знаем, какую ссылку использовать, мы должны собрать все из них.
  • а затем проверить коллекцию на событие onclick
  • Предложения:
    • использовать лучший обработчик событий;)
    • собирать ссылки только с определенной части страницы (основной или навигационный div) для улучшения скорости.
  • ПРЕДОСТЕРЕЖЕНИЯ:
  • это может замедлить отображение страницы
  • атрибут title жестко запрограммирован и одинаковый для всех ссылок


function changeTitle1(){
// find the array of links inside the document
var a = document.getElementsByTagName('a');
// test the array against onclick event
for (var i = 0, j = a.length; i 
  • INFO on the second code block:
  • We know exactly what link to check
  • Suggestion:
    • use a better event handler ;)
  • CAVEATS:
  • this can only be used on a single element
  • title attribute is hardcoded and same for all links

function changeTitle2(){
// find the link
var a = document.getElementById('action_link');
// onclick event
a.onclick = function() {
try{
// change title value
this.title = 'This unique click happened as well!';
// or use setAttribute() method like this
/* this.setAttribute('title', 'This unique click happened as well!'); */

// disable default link action
return false;
}
// clear memory leaks with try-finally block
finally{a = null;}
}
}

    window.onload = function() {
        changeTitle1();
        //changeTitle2();
    }

@spiro: Что касается вашего второго вопроса о текущем состоянии ссылок и изменении их CSS... ну, используйте CSS:)

Краткая версия:

<style type="text/css" media="screen">
    #home #current-home a,
    #contact #current-contact a,
    #about #current-about a
    {/* declarations to style the current state */}
</style>
</head>
<body id="home"> <!-- OR body id="contact" OR body id="about" -->
    <a href="#" title="Home" class="current-home">Home</a>
    <a href="#" title="Contact" class="current-contact">Contact</a>
    <a href="#" title="About us" class="current-about">About us</a>

Длинная версия: http://www.456bereastreet.com/archive/200503/setting_the_current_menu_state_with_css/ (читайте также комментарии)

Примечание: необходимо ли отображать ссылку, если вы уже находитесь на текущей странице?