Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Только слова обернуть в span (https://javascript.ru/forum/misc/57529-tolko-slova-obernut-v-span.html)

qwe88 07.08.2015 15:46

Только слова обернуть в span
 
Добрый день!
Есть таблица с ячейками. В ячейках есть просто слова и еще элементы. Подскажите, пожалуйста, как обернуть в span только слова в ячейках?
<table>
  <tr>
    <td>
    	Слово 1
        <label>
        	<input />
            <div></div>
        </label>
    </td>
    <td>
    	Слово 2
        <label>
        	<input />
            <div></div>
        </label>
    </td>
  </tr>
  <tr>
    <td>
    	Слово 3
        <label>
        	<input />
            <div></div>
        </label>
    </td>
    <td>
    	Слово 4
        <label>
        	<input />
            <div></div>
        </label>
    </td>
  </tr>
  
</table>

EmperioAf 07.08.2015 16:04

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="Keywords" content="shit happens">
<meta name="description" content="gg">
<title>ГГ</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<link rel="stylesheet" href="test.css">
</head>
<body>
<table>
  <tr>
    <td>
        Слово 1
        <label>
            <input />
            <div></div>
        </label>
    </td>
    <td>
        Слово 2
        <label>
            <input />
            <div></div>
        </label>
    </td>
  </tr>
  <tr>
    <td>
        Слово 3
        <label>
            <input />
            <div></div>
        </label>
    </td>
    <td>
        Слово 4
        <label>
            <input />
            <div></div>
        </label>
    </td>
  </tr>
   
</table>
<script>
    var el1 = document.querySelector('td:first-child').childNodes[0];
    alert(el1.textContent);
</script>
</body>

</html>

qwe88 07.08.2015 16:10

Супер!
Спасибо огромное!

ksa 07.08.2015 16:20

Цитата:

Сообщение от qwe88
как обернуть в span только слова в ячейках?

Как вариант...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
<link rel="stylesheet/less" type="text/css" href="style.less">
<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$('td').each(function(){
		var html=$(this).html();
		html=html.replace(/(^[^<]*)/,'<span>$1</span>');
		$(this).html(html);
	});
});
</script>
</head>
<body>
<table>
  <tr>
    <td>
    	Слово 1
        <label>
        	<input />
            <div></div>
        </label>
    </td>
    <td>
    	Слово 2
        <label>
        	<input />
            <div></div>
        </label>
    </td>
  </tr>
  <tr>
    <td>
    	Слово 3
        <label>
        	<input />
            <div></div>
        </label>
    </td>
    <td>
    	Слово 4
        <label>
        	<input />
            <div></div>
        </label>
    </td>
  </tr>
</table>
</body>
</html>

qwe88 07.08.2015 16:22

Отлично, спасибо!

рони 08.08.2015 17:33

qwe88,
читать документацию ... там есть очень похожий пример.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src='http://code.jquery.com/jquery-latest.js'></script>

<style type='text/css'>
span{
  background-image: -webkit-gradient(linear, left, right, color-stop(0, #5CC3FF), color-stop(1, #0060BF));
  background-image: -o-linear-gradient(left, #5CC3FF, #0060BF);
  background-image: -moz-linear-gradient(left, #5CC3FF, #0060BF);
  background-image: -webkit-linear-gradient(left, #5CC3FF, #0060BF);
  background-image: linear-gradient(to right, #5CC3FF, #0060BF)
}

</style>
<script type='text/javascript'>
$(function(){
$('td').contents().filter(function() {
  return this.nodeType == 3 && /[^\s]/.test(this.nodeValue);
})
.wrap('<span></span>')
});
</script>
</head>
<body>
<table>
  <tr>
    <td>
    	Слово 1
        <label>
        	<input />
            <div></div>
        </label>
    </td>
    <td>
    	Слово 2
        <label>
        	<input />
            <div></div>
        </label>
    </td>
  </tr>
  <tr>
    <td>
    	Слово 3
        <label>
        	<input />
            <div></div>
        </label>
    </td>
    <td>
    	Слово 4
        <label>
        	<input />
            <div></div>
        </label>
    </td>
  </tr>
</table>
</body>
</html>


Часовой пояс GMT +3, время: 08:01.