Операционная система обеспечивает абстракцию физической машины для вашей программы (т.е. ваша программа работает на виртуальной машине). Таким образом, ваша программа не имеет доступа к каким-либо физическим ресурсам вашего компьютера, будь то процессорное время, память и т. Д .; он просто должен запросить у ОС эти ресурсы.
В случае памяти ваша программа работает в виртуальном адресном пространстве, определяемом операционной системой. Это адресное пространство имеет несколько областей, таких как стек, куча, код и т. Д. Значения ваших указателей представляют адреса в этом виртуальном адресном пространстве. Действительно, 2 указателя на последовательные адреса будут указывать на последовательные местоположения в этом адресном пространстве.
Однако, это адресное пространство разделяется операционной системой на страницы и сегменты, которые выгружаются из памяти по мере необходимости, поэтому ваши указатели могут указывать или не указывать на последовательные места в физической памяти, и их невозможно определить во время выполнения. если это правда или нет. Это также зависит от политики, используемой операционной системой для разбиения на страницы и сегментации.
Суть в том, что указатели являются адресами памяти. Тем не менее, они являются адресами в виртуальной памяти, и операционная система должна решить, как это отобразится в физической памяти.
Что касается вашей программы, это не проблема. Одна из причин этой абстракции - заставить программы поверить, что они единственные пользователи машины. Представьте себе кошмар, который вам придется пережить, если при написании вашей программы вам нужно будет учитывать память, выделенную другими процессами - вы даже не знаете, какие процессы будут выполняться одновременно с вашей. Кроме того, это хорошая техника для обеспечения безопасности: ваш процесс не может (ну, по крайней мере, не должен иметь) злонамеренно обращаться к пространству памяти другого процесса, так как они работают в 2 разных (виртуальных) пространствах памяти.
Я предполагаю, что это просто упрощенный пример того, что вы хотите сделать, так как изменение ссылки onclick
может быть выполнено в строке:
<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>
Естественно, как предлагает Грант, вы также можете передать значение заголовка в функцию, но тогда вам действительно лучше просто выполнить встроенную версию all путь и пропуская функцию.
Избавьтесь от тега BR внутри элемента SCRIPT и перепишите функцию инструмента на:
function tool(){
document.getElementsByName("link")[0].title = "after click";
}
, и она будет работать. Однако это не лучший способ. Если вы назначаете полю параметр id, вы можете, по крайней мере, использовать document.getElementById (..) или, что еще лучше, использовать такую библиотеку, как jQuery.
Как предлагает свиристель, лучше использовать getElementById ()
<a id="aLink" href="http://www.bla.com" title="hello">link</a>
<script>
function tool(){
document.getElementById('aLink').title = "after click";
}
</script>
Исправление кода Джейсона:
напишите document.getElementById ("ссылка"). Title вместо document.getElementsByName ("link"). 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/
Вы можете использовать setAttribute (attributeName, value) для элемента, который хотите изменить.
document.getElementById('link').setAttribute('title', 'after click');
Это также работает для настраиваемых атрибутов
Я бы использовал http://jquery.com/ , загрузите его и добавьте ссылку на него
Дайте вашему тегу идентификатор, например myLink
Затем, используя JQuery, вы можете написать
$(document).ready(function () {
$("#myLink").click(function(){
$("#myLink").attr("title","after click");
});
});
Используя jquery, вы можете написать следующую команду:
$("a#link").attr("title","after click");
document.getElementsByName("link").title = "after click";
В предоставленном вами коде есть две ошибки:
Как следует из названия, documentmentent.getElementById выполняет поиск по идентификатору, а не по имени. Вам нужно будет указать идентификатор в этом теге привязки. Измените ссылку на щелкните здесь
Вы загружаете документ. 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>
<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>
Я пытаюсь Здесь 2 проблемы:
Заголовок изменяется при наведении указателя мыши, но не в коде:
...
Дом
...
document.getElementsByName ("home") [0] .title = "Заголовок изменен"; // работает
Как изменить класс ссылки:
FROM: Home
Кому: Главная
document.getElementsByName ("дом") [0] .class = "текущий"; // не работает
Спасибо!
Название изменилось, но только в сгенерированном коде. Так работает JS - справляется только с презентацией. Попробуйте использовать панель инструментов Webdeveloper для Firefox, потому что в ней есть возможность отображать сгенерированный код вместе с исходным. Если вам нужен другой способ, подумайте об использовании некоторого серверного программирования.
Мои наблюдения:
Никогда не смешивайте JS с HTML. Если вам нужно обновить код, это будет намного проще - поищите «ненавязчивый JS», чтобы лучше понять суть проблемы.
или
, следовательно, является плохой практикой кодирования.
Не используйте большие JS-пакеты, такие как JQuery, для простых задач. Oни' они хороши, только если используются в полной мере.
Вам действительно нужно выполнять манипуляции с HTML "на лету" и почему? Всплывающая подсказка заголовка так важна для вашего кода? Кому это должно быть выгодно: конечным пользователям или администраторам? А как насчет доступности?
ИНФОРМАЦИЯ о первом блоке кода:
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
Примечание: необходимо ли отображать ссылку , если вы уже находитесь на текущей странице?